2012-06-26 10 views
5

C'è un modo semplice per disegnare in modo obliquo attraverso TextView? Ora sto usando questo codice:Come colpire obliquamente su TextView

textview.setPaintFlags(textview.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); 

Ma ho bisogno di qualcosa di simile:
enter image description here
Io non sono molto familiare con Paint API come achive semplicemente questo modo che qualsiasi aiuto sarà apprezzato.
Grazie.

+0

Ciao leggere questo http://stackoverflow.com/questions/3881553/is-there-an-easy-way-to-strike-through-text-in-an-app-widget – iNan

+0

Vidi quel post, ma ne ho bisogno in modo obliquo. Ho provato ad usare 9patch prima, ma il risultato sembra brutto. – Warlock

risposta

9

È piuttosto semplice con una classe personalizzata TextView. Controlla il Canvas guide dalla documentazione per maggiori informazioni su questo. Notare i commenti in cui è possibile modificare il colore/larghezza:

public class ObliqueStrikeTextView extends TextView 
{ 
    private int dividerColor; 
    private Paint paint; 

    public ObliqueStrikeTextView(Context context) 
    { 
     super(context); 
     init(context); 
    } 

    public ObliqueStrikeTextView(Context context, AttributeSet attrs) 
    { 
     super(context, attrs); 
     init(context); 
    } 

    public ObliqueStrikeTextView(Context context, AttributeSet attrs, int defStyle) 
    { 
     super(context, attrs, defStyle); 
     init(context); 
    } 

    private void init(Context context) 
    { 
     Resources resources = context.getResources(); 
     //replace with your color 
     dividerColor = resources.getColor(R.color.black); 

     paint = new Paint(); 
     paint.setColor(dividerColor); 
     //replace with your desired width 
     paint.setStrokeWidth(resources.getDimension(R.dimen.vertical_divider_width)); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) 
    { 
     super.onDraw(canvas); 
     canvas.drawLine(0, getHeight(), getWidth(), 0, paint); 
    } 
} 

Si può usare in un file di layout qualificandosi completamente la vista con il pacchetto, in questo modo:

<your.package.name.ObliqueStrikeTextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="1234567890" 
     android:textSize="20sp"/> 

Ecco il risultato finale :

Screenshot

+0

Esattamente quello che stavo cercando. Aggiungo solo alcuni "anti-analizzanti" per renderlo migliore. Grazie! – Warlock