Облако контактов EditText

Я пытаюсь создать всплывающие окна с контактами в MultiAutoCompleteTextViewподобно тому, как это реализовано в приложении Google+. Ниже скриншот:

Google+ Compose Post Screenshot .

Я попытался расширить класс 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 символами в строке, символы не видны, и есть нет овала, который можно нарисовать на заднем плане.

Если я изменю метод 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, но безуспешно.

89
задан toobsco42 20 October 2012 в 22:09
поделиться