Android - Настройка настраиваемого рисованного фона для ClickSpan - PullRequest
7 голосов
/ 13 ноября 2011

Есть ли способ, которым мы можем установить настраиваемое рисование (из ресурсов) для диапазона, особенно ClickSpan, TextView?

Google возвращает много ответов для отключения подсветки или изменения цветов и т. Д., Переопределяя updateDrawState ()из диапазона, но я не вижу, как можно установить рисование на фон.

Я вижу возможность в DynamicDrawableSpan, но я не могу заставить его работать вместе с ClickableSpan.Это мой код:

public class MyDynamicDrawableSpan extends DynamicDrawableSpan 
{
    private Context c;

public MyDynamicDrawableSpan(Context context) {
    super();
    c = context;
}

@Override
public Drawable getDrawable() {
    Resources res = c.getResources();
    Drawable d = res.getDrawable(R.drawable.span_background);
    return d;
}

}

И вот как я его использую:

SpannableStringBuilder ssb = new SpannableStringBuilder(text);
MyDynamicDrawableSpan ddSpan = new MyDynamicDrawableSpan(getApplicationContext());
...
ssb.setSpan(ddSpan, start, end, 0);
ssb.setSpan(new ClickableSpan(...

Это не работает.Это только помогает сделать промежуток невидимым.Какие-нибудь яркие идеи?

1 Ответ

0 голосов
/ 16 декабря 2011

Вам нужно установить границы рисованного элемента перед его возвратом в getDrawable ().

d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
...