为什么可以';我不能在我的android主题中使用这个属性吗?
从上下文开始,我尝试设置SearchView小部件的背景颜色。关于这个问题的一个真正的答案已经发布了,我从中学到了很多 不过,我的理解有一个差距,我希望有人能给我解释一下。创建主题时,如以下所示:为什么可以';我不能在我的android主题中使用这个属性吗?,android,attributes,styles,themes,searchview,Android,Attributes,Styles,Themes,Searchview,从上下文开始,我尝试设置SearchView小部件的背景颜色。关于这个问题的一个真正的答案已经发布了,我从中学到了很多 不过,我的理解有一个差距,我希望有人能给我解释一下。创建主题时,如以下所示: <?xml version="1.0" encoding="utf-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="MyCustomT
<?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>
但是,如果我重新声明该属性:
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似乎知道该属性,但当我想使用它时,很方便地忘记了该属性。(我想知道背景中是否有上下文转换)
无论如何,如果我删除了问题代码,那么我可以看到我的自定义主题从其父项继承了searchViewTextField。我只是不明白为什么我不能用我自己的来代替它
(另一个答案提到android.R.stylable,但该文件在api 16中已过时)
提前谢谢
相关安卓资源:
,和search_view.xml(抱歉,有两个链接限制)。您链接的SO答案中明确指出,您不能在自己的主题中指定searchViewTextField,因为它不是可设置样式的资源。您需要根据另一个答案在代码中修改它的值 问题是,为什么我不能使用主题属性“android:searchViewTextField” 出于对编译的Android.jar文件与发布的Android源代码不一致的怀疑,我打开了jar并开始反编译(这对我来说是第一次)。在闲逛之后,似乎确实有人拿着弯刀进入R$style.class,并砍掉了大量资源。据我所知,这一定是故意的,甚至可能是手工的 在其他类似的框架中,这种编译后的源代码修改并非没有先例,但对于任何试图调试框架的人来说,这无疑是一种混乱 讽刺的是,自动生成的R文件都有一个标题,上面写着
/* AUTO-GENERATED FILE. DO NOT MODIFY.
当您将修改文件作为常规过程时,这有点毫无意义。在attrs.xml文件中,searchViewTextField属性在中声明为可样式化。也许这导致了我不理解的问题。试着只使用“searchViewTextField”,而不使用“android:”前缀。您应该能够在继承自android:theme的自定义主题中覆盖它。我尝试了一下,但Eclipse报告“错误:找不到与给定名称匹配的资源:attr'searchViewTextField.”抱歉,但除此之外,我只是不理解使它们可用的机制。可能在Eclipse构建中删除了该属性。
/* AUTO-GENERATED FILE. DO NOT MODIFY.