Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo dibujar texto con diferentes trazos y colores de relleno?

Quiero mostrar el texto como se muestra a continuación en mi aplicación. Estoy usando la clase de Paint con estilo FILL_AND_STROKE para lograr esto. Pero sólo un método setColor() está disponible para establecer el color.

¿Cómo puedo configurar diferentes colores de trazo y relleno?

Texto con diferentes colores de trazo y relleno

4 Solutions collect form web for “Cómo dibujar texto con diferentes trazos y colores de relleno?”

Dentro de personalizado TextView (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 utilice FILL_AND_STROKE. Dibuje una vez con FILL y luego cambie el color y dibuje con STROKE.

(Eso funciona para los rectángulos, no estoy seguro de que STROKE funcione en absoluto para el texto. Tendrá que probarlo y averiguarlo.)

No está perfectamente seguro, pero tal vez podría usar esto:

enlazar

  TextView test = (TextView) findViewById(R.id.test); test.setShadowLayer(float, float, float, int); 

He utilizado la primera solución anterior para llegar a esta idea: poner un mayor STROKE, el texto y luego superponerlo con un menor FILL_AND_STROKE texto:

 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 

Debido a que el FILL por sí solo no estaba viendo ninguno de los atributos Stroke y estaba saliendo muy delgado.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.