Estoy intentando crear burbujas de contacto de forma MultiAutoCompleteTextView
similar a como se implementa en la aplicación Google+. A continuación se muestra una captura de pantalla:
.
He intentado extender la DynamicDrawableSpan
clase para obtener un dibujable extensible en el fondo de un lapso 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;
}
}
Donde mi dibujable oval.xml se define así:
<?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>
En mi clase de actividad que tiene MulitAutoCompleteTextView
, configuro el intervalo de burbujas así:
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);
Sin embargo, en lugar de que la forma ovalada se muestre detrás de los primeros 6 caracteres de la cadena, los caracteres no son visibles y no hay un dibujo ovalado en el fondo.
Si cambio el método getDrawable () de BubbleSpan para usar un .png en lugar de una forma dibujable:
public Drawable getDrawable() {
Resources res = c.getResources();
Drawable d = res.getDrawable(android.R.drawable.bottom_bar);
d.setBounds(0, 0, 100, 20);
return d;
}
Luego, aparecerá el .png, pero los caracteres de la cadena que son parte del intervalo no aparecerán. ¿Cómo puedo hacer que los caracteres en el intervalo se muestren en primer plano, mientras que un dibujable de forma personalizada se muestra en el fondo?
Intenté usar también un en ImageSpan
lugar de subclases DynamicDrawableSpan
pero no tuve éxito.