Я пытаюсь создать контактные пузыри в MultiAutoCompleteTextView
, аналогичные тому, как он реализован в приложении Google+. Ниже приведен снимок экрана:
.
Я попытался расширить класс DynamicDrawableSpan
, чтобы получить растягиваемое на фоне промежутка времени текст
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;
}
}
Где мой вывод oval.xml определяется следующим образом:
<?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>
В моем классе Activity, который имеет MulitAutoCompleteTextView
, я устанавливаю диапазон пузырьков следующим образом:
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);
Однако вместо того, чтобы овальная фигура отображалась за первыми шестью символами в строке, символы не видны, и в фоновом режиме нет овального выделения.
Если я изменяю метод BDBLED getDrawable(), чтобы использовать .png вместо извлекаемой формы:
public Drawable getDrawable() {
Resources res = c.getResources();
Drawable d = res.getDrawable(android.R.drawable.bottom_bar);
d.setBounds(0, 0, 100, 20);
return d;
}
Затем появится .png, но символы в строке, которые являются частью диапазона, не будут отображаться. Как я могу сделать это так, чтобы символы в диапазоне отображались на переднем плане, между тем, в фоновом режиме отображается отображаемая пользовательская фигура?
Я попытался также использовать ImageSpan
вместо подкласса DynamicDrawableSpan
, но не удалось.