Skontaktuj się z Bubble EditText
Próbuję stworzyć pęcherzyki kontaktowe wMultiAutoCompleteTextView
podobnie jak to jest zaimplementowane w aplikacji Google+. Poniżej znajduje się zrzut ekranu:
.
Próbowałem rozszerzyćDynamicDrawableSpan
klasa w celu uzyskania możliwego do spakowania rysunku w tle zakresu tekstu
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;
}
}
Tam, gdzie moja drawable oval.xml jest zdefiniowana tak:
<?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>
W mojej klasie aktywności, która maMulitAutoCompleteTextView
, Ustawiłem rozpiętość bańki tak:
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);
Jednak zamiast owalnego kształtu wyświetlanego za pierwszymi 6 znakami w ciągu, znaki nie są widoczne i nie ma owalnego rysunku w tle.
Jeśli zmienię metodę getDrawable () BubbleSpan, aby użyć .png zamiast rysowanego kształtu:
public Drawable getDrawable() {
Resources res = c.getResources();
Drawable d = res.getDrawable(android.R.drawable.bottom_bar);
d.setBounds(0, 0, 100, 20);
return d;
}
Wtedy pojawi się .png, ale znaki w łańcuchu, które są częścią zakresu, nie pojawią się. Jak mogę to zrobić, aby znaki w zakresie były wyświetlane na pierwszym planie, podczas gdy niestandardowy kształt można wyświetlić w tle?
Próbowałem również użyćImageSpan
zamiast podklasyDynamicDrawableSpan
ale nie powiodło się.