Android-将自定义可绘制背景设置为ClickSpan

Android-将自定义可绘制背景设置为ClickSpan,android,textview,clickable,Android,Textview,Clickable,有没有一种方法可以将自定义绘图(来自参考资料)设置为TextView的跨度,特别是ClickSpan Google通过覆盖跨度的updateDrawState()返回了许多关于禁用高光或更改颜色等的答案,但我不知道如何将可绘制的背景设置为背景 我在DynamicDrawableSpan中看到了一种可能性,但我无法使它与ClickableSpan一起工作。这是我的代码: public class MyDynamicDrawableSpan extends DynamicDrawableSpan

有没有一种方法可以将自定义绘图(来自参考资料)设置为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(...

这是行不通的。它只会使跨度不可见。有什么好主意吗?

在getDrawable()中返回之前,需要设置Drawable的边界


我尝试过这个方法,但对于xml定义的可绘制形状仍然不起作用。span是不可见的。clickablespan必须如下设置:您的span_background.xml文件是什么样子的?我也尝试过类似的方法,创建了一个可绘制的形状,但跨度显示为不可见。这是因为必须在视图的背景(如按钮)设置可绘制的形状吗?我在做类似的事情,我解释得很好。你可以看到我的()
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());