2012-06-26 18 views
5

¿Hay alguna manera simple de dibujar oblicuamente en TextView? Ahora estoy usando este código:Cómo desplazarse oblicuamente en TextView

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

pero necesito algo como esto:
enter image description here
No estoy muy familiarizado con la API de pintura cómo achive simplemente esto por lo que cualquier ayuda será apreciada.
Gracias.

+0

Hola leer este http://stackoverflow.com/questions/3881553/is-there-an-easy-way-to-strike-through-text-in-an-app-widget – iNan

+0

Yo vi esa publicación, pero la necesito oblicuamente Intenté usar 9patch antes, pero el resultado se ve feo. – Warlock

Respuesta

9

Es bastante fácil con una clase personalizada TextView. Consulte la Canvas guide de la documentación para obtener más información al respecto. Tenga en cuenta los comentarios donde se puede cambiar el color/ancho:

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); 
    } 
} 

usted puede utilizarlo en un archivo de diseño al calificar totalmente la vista con su paquete, así:

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

Aquí está el resultado final :

Screenshot

+0

Exactamente lo que estaba buscando. Solo agrego algo de "anti-análisis" para que se vea mejor. ¡Gracias! – Warlock