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ę.

questionAnswers(3)

yourAnswerToTheQuestion