Estou tentando criar bolhas de contato no MultiAutoCompleteTextView
similar a como ele é implementado no aplicativo Google+. Abaixo está uma captura de tela:
.
Tentei estender a DynamicDrawableSpan
classe para obter um drawable spannable no fundo de uma extensão de texto
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;
}
}
Onde meu drawable oval.xml é definido assim:
<?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>
Na minha classe de atividade que tem o MulitAutoCompleteTextView
, eu defino a amplitude da bolha assim:
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);
No entanto, em vez da forma oval exibida atrás dos primeiros 6 caracteres na string, os caracteres não são visíveis e não há drawable oval no fundo.
Se eu alterar o método getDrawable () do BubbleSpan para usar um .png em vez de um drawable de forma:
public Drawable getDrawable() {
Resources res = c.getResources();
Drawable d = res.getDrawable(android.R.drawable.bottom_bar);
d.setBounds(0, 0, 100, 20);
return d;
}
Em seguida, o .png aparecerá, mas os caracteres na string que fazem parte do período não serão exibidos. Como posso fazer com que os caracteres no intervalo sejam exibidos em primeiro plano, enquanto um drawable de forma personalizada é exibido em segundo plano?
Também tentei usar um em ImageSpan
vez de uma subclasse, DynamicDrawableSpan
mas não tive êxito.