2016-06-25 46 views
0

我一直在努力尝试真正的主题SearchView。我最小的API也是sdk 21,所以我应该可以使用新的样式选项。Android:似乎不能主题SearchView

具体而言,我希望在单击搜索图标时出现的应用程序栏文本字段具有主题性。我想最终使背景变成白色,并且文本/光标可以是蓝色或黑色。

这是我的styles.xml。最后一个主题是我正在研究的新SearchTheme。实际值并不重要,它们只是我尝试改变发生时扔进的垃圾值。

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
    <item name="android:windowBackground">@android:color/white</item> 
    <item name="android:searchViewStyle">@style/AppTheme.SearchTheme</item> 
</style> 

<style name="AppTheme.NoActionBar"> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
</style> 

<style name="AppTheme.PreferencesTheme" parent="AppTheme"> 
    <item name="android:windowBackground">@android:color/white</item> 
</style> 

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"> 
    <item name="android:windowBackground">@android:color/white</item> 
    <item name="android:searchViewStyle">@style/AppTheme.SearchTheme</item> 
</style> 

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"> 
    <item name="android:windowBackground">@android:color/white</item> 
    <item name="android:searchViewStyle">@style/AppTheme.SearchTheme</item> 
</style> 

<style name="AppTheme.SearchTheme" parent="Theme.AppCompat.Light"> 
    <item name="android:closeIcon">@drawable/contacts5icon</item> 
    <item name="android:voiceIcon">@drawable/contacts5icon</item> 
    <item name="android:queryBackground">@android:color/black</item> 
    <item name="android:windowBackground">@android:color/white</item> 
</style> 

我已经分配给AppTheme.SearchTheme,我使用我的布局等主题。但我所做的没有任何效果。这些值似乎没有改变。

帮我看看这里。我之前并没有真正搞砸Android主题,所以我有点失落。谢谢。

回答

0

这应该有助于你走上正确的轨道,根据克里斯班恩斯的预演棒棒糖机器人上的材料设计。对你来说,简而言之:用Widget.AppCompat.SearchView风格的扩展名在你的主风格下设置item属性searchViewStyle。

您可以使用queryBackground项目属性来更改文本字段的背景。其他属性详述如下。

<style name=”Theme.MyTheme” parent=”Theme.AppCompat”> 
<item name=”searchViewStyle”>@style/MySearchViewStyle</item> 
</style> 
<style name=”MySearchViewStyle” parent=”Widget.AppCompat.SearchView”> 
<!-- Background for the search query section (e.g. EditText) --> 
<item name="queryBackground">...</item> 
<!-- Background for the actions section (e.g. voice, submit) --> 
<item name="submitBackground">...</item> 
<!-- Close button icon --> 
<item name="closeIcon">...</item> 
<!-- Search button icon --> 
<item name="searchIcon">...</item> 
<!-- Go/commit button icon --> 
<item name="goIcon">...</item> 
<!-- Voice search button icon --> 
<item name="voiceIcon">...</item> 
<!-- Commit icon shown in the query suggestion row --> 
<item name="commitIcon">...</item> 
<!-- Layout for query suggestion rows --> 
<item name="suggestionRowLayout">...</item> 
</style> 

here

+0

老实说,我想所有这一切一百万次,并不能取得任何进展。不知道我做错了什么。无论如何,我决定只是默认默认外观,不再担心它。但严重的是,queryBackground,例如,永远不会改变任何东西。 – user2223059