Tôi đang cố gắng tạo bong bóng liên hệ MultiAutoCompleteTextView
tương tự như cách nó được triển khai trong ứng dụng Google+. Dưới đây là ảnh chụp màn hình:
.
Tôi đã cố gắng mở rộng DynamicDrawableSpan
lớp để có được một bản vẽ có thể kéo dài được trong nền của một khoảng văn bản
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;
}
}
Trường hợp có thể vẽ oval.xml của tôi được xác định như vậy:
<?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>
Trong lớp Hoạt động của tôi có MulitAutoCompleteTextView
, tôi đặt khoảng trống bong bóng như vậy:
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);
Tuy nhiên, thay vì hình bầu dục hiển thị phía sau 6 ký tự đầu tiên trong chuỗi, các ký tự không hiển thị và không có hình bầu dục có thể vẽ được ở nền.
Nếu tôi thay đổi phương thức getDrawable () của BubbleSpan để sử dụng .png thay vì một hình dạng có thể vẽ:
public Drawable getDrawable() {
Resources res = c.getResources();
Drawable d = res.getDrawable(android.R.drawable.bottom_bar);
d.setBounds(0, 0, 100, 20);
return d;
}
Sau đó, .png sẽ hiển thị nhưng các ký tự trong chuỗi là một phần của khoảng cách sẽ không hiển thị. Làm thế nào tôi có thể làm cho nó để các ký tự trong khoảng được hiển thị ở nền trước, trong khi một hình dạng tùy chỉnh có thể vẽ được hiển thị ở nền?
Tôi cũng đã cố gắng sử dụng một ImageSpan
thay vì phân lớp DynamicDrawableSpan
nhưng không thành công.