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 드로어 블은 다음과 같이 정의됩니다.
<?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 자 뒤에 타원형 모양이 표시되는 대신 문자가 표시되지 않고 배경에 타원형 드로어 블이 없습니다.
모양 드로어 블 대신 .png를 사용하도록 BubbleSpan의 getDrawable () 메서드를 변경하면 :
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
했지만 실패했습니다.