ฉันกำลังพยายามสร้างฟองอากาศการติดต่อในลักษณะที่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
แต่ไม่สำเร็จ