Saya mencoba membuat gelembung kontak yang MultiAutoCompleteTextView
serupa dengan penerapannya di aplikasi Google+. Di bawah ini adalah tangkapan layarnya:
.
Saya telah mencoba memperluas DynamicDrawableSpan
kelas untuk mendapatkan drawable yang dapat digambar di latar belakang rentang teks
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;
}
}
Di mana drawable oval.xml saya didefinisikan sebagai:
<?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>
Di kelas Aktivitas saya yang memiliki MulitAutoCompleteTextView
, saya mengatur rentang gelembung seperti ini:
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);
Namun, alih-alih menampilkan bentuk oval di belakang 6 karakter pertama dalam string, karakter tersebut tidak terlihat dan tidak ada drawable oval di latar belakang.
Jika saya mengubah metode getDrawable () BubbleSpan untuk menggunakan .png sebagai ganti drawable bentuk:
public Drawable getDrawable() {
Resources res = c.getResources();
Drawable d = res.getDrawable(android.R.drawable.bottom_bar);
d.setBounds(0, 0, 100, 20);
return d;
}
Kemudian .png akan muncul tetapi karakter dalam string yang merupakan bagian dari span tidak akan muncul. Bagaimana cara membuatnya sehingga karakter dalam span ditampilkan di latar depan, sementara drawable bentuk kustom ditampilkan di latar belakang?
Saya mencoba juga menggunakan an ImageSpan
alih - alih subclass DynamicDrawableSpan
tetapi tidak berhasil.