Sto cercando di creare bolle di contatto in modo MultiAutoCompleteTextViewsimile a come è implementato nell'app Google+. Di seguito è una schermata:
.
Ho cercato di estendere la DynamicDrawableSpanclasse per ottenere un disegnabile spannabile sullo sfondo di un intervallo di testo
public class BubbleSpan extends DynamicDrawableSpan {
private Context c;
public BubbleSpan(Context context) {
super();
c = context;
}
@Override
public Drawable getDrawable() {
Resources res = c.getResources();
Drawable d = res.getDrawable(R.drawable.oval);
d.setBounds(0, 0, 100, 20);
return d;
}
}
Dove il mio drawable oval.xml è definito così:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="#352765"/>
<padding android:left="7dp" android:top="7dp"
android:right="7dp" android:bottom="7dp" />
<corners android:radius="6dp" />
</shape>
Nella mia classe di attività che ha il MulitAutoCompleteTextView, ho impostato l'intervallo di bolle in questo modo:
final Editable e = tv.getEditableText();
final SpannableStringBuilder sb = new SpannableStringBuilder();
sb.append("some sample text");
sb.setSpan(new BubbleSpan(getApplicationContext()), 0, 6, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
e.append(sb);
Tuttavia, invece della forma ovale visualizzata dietro i primi 6 caratteri nella stringa, i caratteri non sono visibili e non è tracciabile alcun ovale sullo sfondo.
Se cambio il metodo getDrawable () di BubbleSpan per utilizzare un .png invece di una forma disegnabile:
public Drawable getDrawable() {
Resources res = c.getResources();
Drawable d = res.getDrawable(android.R.drawable.bottom_bar);
d.setBounds(0, 0, 100, 20);
return d;
}
Quindi verrà visualizzato .png ma i caratteri nella stringa che fanno parte dell'intervallo non verranno visualizzati. Come posso fare in modo che i caratteri nell'intervallo siano visualizzati in primo piano, nel frattempo una forma disegnabile personalizzata viene visualizzata sullo sfondo?
Ho tentato di utilizzare anche una ImageSpaninvece di una sottoclasse, DynamicDrawableSpanma senza successo.


