Я намагаюся створити бульбашки контактів, 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 drawable визначається так:
<?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>
У своєму класі активності, який має 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);
Однак замість овальної форми, що відображається за першими 6 символами у рядку, символи не видно, а на задньому плані немає овальних малюнків.
Якщо я змінив метод getDrawable () BubbleSpan, щоб використовувати .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
але не вдався.