カスタムのドローアブル(リソースから)を、TextViewのスパン、特にClickSpanに設定する方法はありますか?
Googleは、スパンのupdateDrawState()をオーバーライドすることによって、ハイライトを無効にしたり、色を変更するなど、多くの回答を返していますが、バックグラウンドにdrawableを設定する方法はありません。
私は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(...
これは動作しません。スパンを見えないようにするだけです。どんな明るいアイデアですか?
ベストアンサー
DrawableのBoundsをgetDrawable()で返す前に設定する必要があります。
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());