4

在 attrs 我有

<attr name="bzz" format="color" />

然后在主题

<style name="mytheme" parent="android:Theme">
    <item name="bzz">@color/aaa</item>
</style>

在代码中这很好用

tv.setBackgroundResource(R.color.aaa);

但是当我这样做时,它给了我一个错误

tv.setBackgroundResource(R.attr.bzz);

我不明白问题出在哪里,我的逻辑是我将 bzz 设置为对颜色的引用,这样应该可以正常工作,但它没有:) 它说像android.content.res.Resources$NotFoundException: Resource ID #0x7f010008 但我不明白找不到什么资源?

我敢肯定,如果我直接设置颜色,它就会有问题,它的效果很好,究竟是什么东西没有正确链接

谢谢

4

1 回答 1

11

您需要解析attr以获取相应color的资源 id。然后你可以将TextView的后台资源设置为获取的资源id。

示例代码:

TypedValue typedValue = new TypedValue();
getTheme().resolveAttribute(R.attr.bzz, typedValue, true);
tv.setBackgroundResource(typedValue.resourceId);
于 2013-01-25T15:23:52.007 回答