Borde (como sombra) sólido y grande en TextView Android

Estoy usando ese "hack". He leído aquí en stackoverflow.

@Override public void draw(Canvas canvas) { for (int i = 0; i < 20; i++) { super.draw(canvas); } } 

Pero mi frontera todavía batido, quiero poner un borde grande y sólido en todo mi TextView (ya tengo mi componente extender un textview).

Tengo un selector en color de texto cuando hago clic en este texto que el color del texto necesita cambiar (ya estaba funcionando, pero traté de aplicar otra alternativa usando lienzo, en esta alternativa, perdí este comportamiento).

Introduzca aquí la descripción de la imagen

Esta página soluciona tu problema, puedes personalizar el estilo:

¿Cómo puedo poner un borde alrededor de una vista de texto de Android?

Puede establecer una forma dibujable (un rectángulo) como fondo para la vista.

 <TextView android:text="Some text" android:background="@drawable/back"/> 

Y rectángulo drawable back.xml (poner en la carpeta res / drawable):

  <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="#ffffff" /> <stroke android:width="1dip" android:color="#4fa5d5"/> </shape> 

Puede utilizar # 00000000 para que el color sólido tenga un fondo transparente. También puede utilizar relleno para separar el texto del borde. Para obtener más información, consulte: http://developer.android.com/guide/topics/resources/drawable-resource.html

Su solución actual (el hack) está funcionando bien, sólo tiene que ajustar 2 parámetros en consecuencia para obtener un mejor efecto de sombra "sólido".

Parámetros

El primer parámetro es el radio de sombra de TextView . Este parámetro decide cómo "amplio" el efecto de desenfoque (sombra) se extenderá detrás de su letra.

El segundo parámetro es el contador de repetición del bucle for que se envuelve en el TextView onDraw(...) . El recuento más alto de la repetición le conseguirá una sombra más "sólida" negociando apagado el funcionamiento .

Sombra sólida

La regla aquí es, el incremento en el radio de la sombra (↑) siempre debe acompañar con el incremento en el contador de repetición (↑) para lograr el efecto de sombra "sólido".

Del mismo modo, si desea obtener rendimiento al reducir el contador de repetición (↓) , también tiene que disminuir el radio de sombra (↓) .

TextView sólidas TextView

 package com.example.solidshadowtext; import android.content.Context; import android.graphics.Canvas; import android.support.annotation.Nullable; import android.util.AttributeSet; import android.widget.TextView; public class SolidShadowTextView extends TextView { /** * Shadow radius, higher value increase the blur effect */ private static final float SHADOW_RADIUS = 10f; /** * Number of times a onDraw(...) call should repeat itself. * Higher value ends up in more solid shadow (but degrade in performance) * This value must be >= 1 */ private static final int REPEAT_COUNTER = 10000; // Shadow color private static final int SHADOW_COLOR = 0xff000000; public SolidShadowTextView(Context context) { super(context); init(); } public SolidShadowTextView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); init(); } @Override protected void onDraw(Canvas canvas) { for (int i = 0; i < REPEAT_COUNTER; i++) { super.onDraw(canvas); } } @Override public void setShadowLayer(float radius, float dx, float dy, int color) { // Disable public API to set shadow } private void init() { super.setShadowLayer(SHADOW_RADIUS, 0, 0, SHADOW_COLOR); } } 

Muestra

Sombras sólidas TextView

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