Android 我是否可以仅为活动中的一个SearchView更改为黑色主题?

Android 我是否可以仅为活动中的一个SearchView更改为黑色主题?,android,Android,我的应用程序有一个浅色材料主题,但我活动的一部分是深色的,我在其中放置了一个SearhView。问题是搜索图标提示是蓝底黑。不漂亮。因此,我可以仅覆盖此单一视图的主题吗 直观的做法是更改样式。所以我尝试了这个,但没有成功: <SearchView style="@android:style/Widget.Material.SearchView" (...) /> (我想,正常的样式应该是小部件.材质.灯光.搜索视图) 建议 附言:我不会去兔子洞你

我的应用程序有一个浅色材料主题,但我活动的一部分是深色的,我在其中放置了一个
SearhView
。问题是搜索图标提示是蓝底黑。不漂亮。因此,我可以仅覆盖此单一视图的主题吗

直观的做法是更改
样式。所以我尝试了这个,但没有成功:

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

(我想,正常的样式应该是
小部件.材质.灯光.搜索视图

建议


附言:我不会去兔子洞

你可以把它放在你的舱单上。您可以为整个应用程序全局定义主题,但也可以为活动应用其他主题

申请:

<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>
<style name="MySearchViewStyle" parent="Base.Widget.AppCompat.SearchView">
  <item name="searchIcon">@drawable/my_incredable_search_icon</item>
</style>
@stye/MySearchViewStyle
这是基本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>

@布局/abc\u搜索\u视图
@可绘图/abc\u文本字段\u搜索\u材料
@可绘图/abc\u文本字段\u搜索\u材料
@可绘图/abc_ic_clear_mtrl_alpha
@可绘图/abc_ic_搜索_api_mtrl_alpha
@可绘图/abc_ic_搜索_api_mtrl_alpha
@可绘图/abc\U ic\U go\U搜索\U api\U mtrl\U alpha
@可绘图/abc\U ic\U语音\U搜索\U api\U mtrl\U alpha
@可绘制/abc\U ic\U提交\U搜索\U api\U mtrl\U alpha
@布局/abc搜索下拉列表项目图标行
您可以这样定义您的样式:

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

@可绘制/我的可增量搜索图标

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

申请:

<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>
<style name="MySearchViewStyle" parent="Base.Widget.AppCompat.SearchView">
  <item name="searchIcon">@drawable/my_incredable_search_icon</item>
</style>
@stye/MySearchViewStyle
这是基本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>

@布局/abc\u搜索\u视图
@可绘图/abc\u文本字段\u搜索\u材料
@可绘图/abc\u文本字段\u搜索\u材料
@可绘图/abc_ic_clear_mtrl_alpha
@可绘图/abc_ic_搜索_api_mtrl_alpha
@可绘图/abc_ic_搜索_api_mtrl_alpha
@可绘图/abc\U ic\U go\U搜索\U api\U mtrl\U alpha
@可绘图/abc\U ic\U语音\U搜索\U api\U mtrl\U alpha
@可绘制/abc\U ic\U提交\U搜索\U api\U mtrl\U alpha
@布局/abc搜索下拉列表项目图标行
您可以这样定义您的样式:

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

@可绘制/我的可增量搜索图标

是,但我不想将其应用于整个活动。只有一个视图“@style/MySearchViewStyle”是如何定义的?就像其他样式一样。我想问的是,为了得到一个明亮的搜索提示,你在标签中设置了什么属性(例如放大镜)。灯光主题可以解决这个问题,但是如果我只对单个视图应用样式,我需要自己定义这些属性。我不知道什么属性决定了放大镜的颜色(在发布原始帖子之前,我已经在谷歌上搜索了一段时间),我更新了我的答案。我发布了searchview的基础。在那里可以看到可以覆盖的属性。测试它会影响您正在搜索的内容。我从未使用过搜索视图:)是的,但我不想将其应用于整个活动。只有一个视图“@style/MySearchViewStyle”是如何定义的?就像其他样式一样。我想问的是,为了得到一个明亮的搜索提示,你在标签中设置了什么属性(例如放大镜)。灯光主题可以解决这个问题,但是如果我只对单个视图应用样式,我需要自己定义这些属性。我不知道什么属性决定了放大镜的颜色(在发布原始帖子之前,我已经在谷歌上搜索了一段时间),我更新了我的答案。我发布了searchview的基础。在那里可以看到可以覆盖的属性。测试它会影响您正在搜索的内容。我从来没有使用过搜索视图:)去这个兔子洞怎么样?从这个兔子洞下去怎么样?