2011-11-13 17 views
7

¿Hay alguna manera de establecer un dibujable personalizado (a partir de los recursos) en un tramo, especialmente un ClickSpan, de TextView?Android - Configuración de fondo dibujable personalizado para ClickSpan

Google devuelve muchas respuestas para deshabilitar los resaltados o cambiar los colores, sobrescribiendo updateDrawState() del tramo, pero no veo cómo se puede establecer un dibujable en el fondo.

Veo una posibilidad en DynamicDrawableSpan, pero no puedo hacerlo funcionar junto con ClickableSpan. Este es mi código:

public class MyDynamicDrawableSpan extends DynamicDrawableSpan 
{ 
    private Context c; 

public MyDynamicDrawableSpan(Context context) { 
    super(); 
    c = context; 
} 

@Override 
public Drawable getDrawable() { 
    Resources res = c.getResources(); 
    Drawable d = res.getDrawable(R.drawable.span_background); 
    return d; 
} 

}

Y así es como lo uso:

SpannableStringBuilder ssb = new SpannableStringBuilder(text); 
MyDynamicDrawableSpan ddSpan = new MyDynamicDrawableSpan(getApplicationContext()); 
... 
ssb.setSpan(ddSpan, start, end, 0); 
ssb.setSpan(new ClickableSpan(... 

Esto no funciona. Solo ayuda a que el tramo sea invisible. ¿Alguna idea brillante?

+0

¿cómo se ve tu archivo span_background.xml? He intentado algo similar creando una forma dibujable, pero el tramo se muestra como invisible. ¿Esto se debe a que una forma dibujable debe establecerse en el fondo de una vista como un botón? http://stackoverflow.com/questions/6674657/how-change-button-shape-using-xml-or-using-java-code – toobsco42

+0

Estoy haciendo algo similar AQUÍ http://stackoverflow.com/questions/10812316/ contact-bubble-edittext – toobsco42

+0

aquí lo he explicado bien. Puedes ver mi [respuesta] (http://krishnalalstha.wordpress.com/2012/06/07/making-gosmsproevernote-like-edittext/) –

Respuesta

0

Debe establecer los límites del Drawable antes de devolverlo en getDrawable().

d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); 
+0

Intenté esto, pero todavía no funciona para una forma xml dibujable . El lapso es simplemente invisible. – toobsco42

+0

El clickablespan debe establecerse así: http://stackoverflow.com/questions/8641343/android-clickablespan-not-calling-onclick – toobsco42

Cuestiones relacionadas