java - trazado - ¿Cómo dibujar texto con diferentes trazos y colores de relleno?
podemos rellenar una forma abierta (4)
Quiero mostrar el texto como abajo en mi aplicación. Estoy usando la clase de Paint
con estilo FILL_AND_STROKE
para lograr esto. Pero solo un método setColor()
está disponible para establecer el color.
¿Cómo configuro diferentes trazos y colores de relleno?
Dentro de TextView personalizado (no funciona en EditText):
@Override
public void onDraw(Canvas canvas)
{
final ColorStateList textColor = getTextColors();
TextPaint paint = this.getPaint();
paint.setStyle(Style.STROKE);
paint.setStrokeJoin(Join.ROUND);
paint.setStrokeMiter(10);
this.setTextColor(strokeColor);
paint.setStrokeWidth(strokeWidth);
super.onDraw(canvas);
paint.setStyle(Style.FILL);
setTextColor(textColor);
super.onDraw(canvas);
}
No estoy completamente seguro, pero quizás puedas usar esto:
TextView test = (TextView) findViewById(R.id.test);
test.setShadowLayer(float, float, float, int);
No uses FILL_AND_STROKE. Dibuja una vez con FILL y luego cambia el color y dibuja con STROKE.
(Eso funciona para los rectángulos. No estoy seguro de que STROKE funcione para el texto. Tendrá que probarlo y averiguarlo).
Utilicé la primera solución anterior para llegar a esta idea: dejar un trazo más grande, enviar un texto y luego superponerlo con un texto FILL_AND_STROKE más pequeño:
mScorePaint = new TextPaint();
mScorePaint.setTextSize(63);
mScorePaint.setStyle(Style.STROKE);
mScorePaint.setStrokeJoin(Join.ROUND);
mScorePaint.setStrokeMiter(10.0f);
mScorePaint.setStrokeWidth(frameWidth/50.0f); // about 12
mScorePaint.setColor(0xffff0000); // black
c.drawText(Integer.toString(mScore), x, y, mScorePaint); // red first
mScorePaint.setStrokeWidth(frameWidth/125.0f); // about 5
mScorePaint.setColor(0xff000000); // red
c.drawText(Integer.toString(mScore), x, y, mScorePaint); // black on top
Porque el LLENO solo no estaba viendo ninguno de los atributos de Trazo y estaba saliendo muy delgado.