2011-11-13 6 views
7

C'è un modo per impostare un file personalizzabile (da risorse) a un intervallo, in particolare un ClickSpan, di TextView?Android - Impostazione di sfondo personalizzabile per ClickSpan

Google restituisce molte risposte per disattivare le luci o cambiare i colori ecc. Sostituendo updateDrawState() dello span, ma non vedo come si possa impostare un drawable sullo sfondo.

Vedo una possibilità in DynamicDrawableSpan, ma non riesco a farlo funzionare con ClickableSpan. Questo è il mio codice:

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

}

E questo è come lo uso:

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

Questo non funziona. Aiuta solo a rendere la luce invisibile. Qualche idea brillante?

+0

come si presenta il file span_background.xml? Ho provato qualcosa di simile creando una forma disegnabile, ma la span viene visualizzata come invisibile. È perché una forma disegnabile deve essere impostata sullo sfondo di una vista come un pulsante? http://stackoverflow.com/questions/6674657/how-change-button-shape-using-xml-or-using-java-code – toobsco42

+0

Sto facendo qualcosa di simile QUI http://stackoverflow.com/questions/10812316/ contact-bubble-edittext – toobsco42

+0

qui l'ho spiegato bene. Puoi vedere la mia [risposta] (http://krishnalalstha.wordpress.com/2012/06/07/making-gosmsproevernote-like-edittext/) –

risposta

0

È necessario impostare i limiti del disegno prima di restituirlo in getDrawable().

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

Ho provato questo, ma ancora non funziona per una forma definita xml disegnabile . Lo span è solo invisibile. – toobsco42

+0

Il clickablespan deve essere impostato in questo modo: http://stackoverflow.com/questions/8641343/android-clickablespan-not-calling-onclick – toobsco42