为什么我不能在我的安卓主题中使用此属性?



要从某些上下文开始,我正在尝试为搜索视图小部件的背景颜色设计。一个非常有见地的问题,因此已经发布了这个问题的答案,我从中学到了很多。

我的理解上有一个差距,我希望有人可以向我解释。当我创建一个主题时,例如以下内容:

<?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中已过时)

预先感谢。

相关的Android来源:

themes.xml,attr.xml和search_view.xml(对不起,两个链接限制)。

so答案中您明确链接的答案说,您无法在自己的主题中指定searchViewTextfield,因为它不是可说的资源。您需要根据其他答案将其值修改为代码。

问题是,为什么我不能使用主题属性" android:searchViewTextfield"?

出于怀疑,我对已编译的android.jar文件没有与已发表的Android源相吻合,因此我撕开了罐子并开始分解(对我来说是第一个)。戳了戳后,似乎有人进入了R $ Style.Class。据我所知,它一定是故意完成的,甚至可能是手动进行的。

在其他类似框架中,这种编译的源修改并非没有先例,但是它肯定会使任何试图调试框架的人感到困惑。

具有讽刺意味

/* AUTO-GENERATED FILE.  DO NOT MODIFY.

Kinda毫无意义,当您将其进行例行过程以修改文件。

相关内容

  • 没有找到相关文章

最新更新