从一些上下文开始,我正在尝试设置 SearchView 小部件的背景颜色。已经发布了对这个问题的一个非常有见地的答案,我从中学到了很多。
不过,我的理解有一个差距,我希望有人可以向我解释。当我创建一个主题时,例如:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="MyCustomTheme" parent="android:Theme">
<item name="android:searchViewTextField">@android:color/white</item>
</style>
</resources>
Eclipse 编译时出现错误,说它不知道该属性:
error: Error: No resource found that matches the given name: attr 'android:searchViewTextField'.
但是,如果我重新声明该属性:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<declare-styleable name="CustomSearchView">
<attr name="android:searchViewTextField" format="reference" />
</declare-styleable>
</resources>
Eclipse 以错误消息响应:
error: Attribute "android:searchViewTextField" has already been defined
Eclipse 似乎知道该属性,但是当我想使用它时很方便地忘记了该属性。(我想知道后台是否正在进行一些上下文切换)
无论如何,如果我删除了问题代码,那么我可以看到我的自定义主题从其父主题继承了 searchViewTextField。我只是不明白为什么我不能用我自己的来代替它。
(另一个答案提到了 android.R.stylable,但该文件在 api 16 中已过时)
提前致谢。
相关安卓资源: