7

(リソースからの) カスタム ドローアブルを TextView のスパン、特に ClickSpan に設定する方法はありますか?

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

これは動作しません。スパンを非表示にするのに役立ちます。明るいアイデアはありますか?

4

1 に答える 1

0

getDrawable() で返す前に、Drawable の Bounds を設定する必要があります。

d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
于 2011-12-16T12:55:14.937 に答える