我正在尝试创建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;
}
}
我的卵形.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);
但是,不是在字符串的前6个字符后面显示椭圆形,而是不可见这些字符,并且背景中没有椭圆形可绘制对象。
如果我将BubbleSpan的getDrawable()方法更改为使用.png而不是shape drawable:
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
但是没有成功。