我可以仅在活动中为一个SearchView更改为黑暗主题吗?

时间:2015-10-08 12:25:07

标签: android

我的应用程序有一个Light Material主题,但我活动的一部分是黑暗的,我在其中放置了SearhView。问题是,搜索图标提示是黑蓝色。不漂亮。那么我可以只覆盖这个单一视图的主题吗?

直观的做法是改变style行为。所以我尝试了这个,但无济于事:

<SearchView
        style="@android:style/Widget.Material.SearchView"
        (...)
/>

(我认为正常的样式是Widget.Material.Light.SearchView

建议?

PS:我下降this兔子洞

1 个答案:

答案 0 :(得分:4)

您可以在清单中进行设置。您可以为整个应用程序全局定义主题,但也可以为活动应用其他主题。

申请表:

<application
    android:name=".MyApp"
    android:theme="@style/Theme.global">

活动:

<activity
      android:name=".SomeActivity"
      android:theme="@style/Theme.search">

评论更新:

然后在styles.xml中设置它,您可以在其中定义主题属性,如下所示:

<item name="android:searchViewStyle">@stye/MySearchViewStyle</item>

这是基本Searchview的默认设置:

    <style name="Base.Widget.AppCompat.SearchView" parent="android:Widget">
    <item name="layout">@layout/abc_search_view</item>
    <item name="queryBackground">@drawable/abc_textfield_search_material</item>
    <item name="submitBackground">@drawable/abc_textfield_search_material</item>
    <item name="closeIcon">@drawable/abc_ic_clear_mtrl_alpha</item>
    <item name="searchIcon">@drawable/abc_ic_search_api_mtrl_alpha</item>
    <item name="searchHintIcon">@drawable/abc_ic_search_api_mtrl_alpha</item>
    <item name="goIcon">@drawable/abc_ic_go_search_api_mtrl_alpha</item>
    <item name="voiceIcon">@drawable/abc_ic_voice_search_api_mtrl_alpha</item>
    <item name="commitIcon">@drawable/abc_ic_commit_search_api_mtrl_alpha</item>
    <item name="suggestionRowLayout">@layout/abc_search_dropdown_item_icons_2line</item>
</style>

您可以像这样定义您的风格:

<style name="MySearchViewStyle" parent="Base.Widget.AppCompat.SearchView">
  <item name="searchIcon">@drawable/my_incredable_search_icon</item>
</style>