【问题标题】:Android SearchView icon disappears when SearchView style is overridden当 SearchView 样式被覆盖时,Android SearchView 图标消失
【发布时间】:2017-07-15 20:45:33
【问题描述】:

我的活动的主要内容区域中有一个 SearchView。

我需要覆盖 style.xml 文件中的 SearchView 样式(这样我可以删除 SearchView 的下划线 - as shown here)。

但是,当我覆盖 SearchView 样式时,它的 searchIcon 会从 UI 中消失:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="searchViewStyle">@style/MySearchView</item>
    <item name="android:searchViewStyle">@style/MySearchView</item>
</style>

<style name="MySearchView" parent="Widget.AppCompat.Light.SearchView">
    <!-- nothing entered here yet! -->
</style>

我知道我可以为searchIcon 指定我自己的drawable,但我想使用默认的。

那么如何在不丢失默认searchIcon 的情况下指定MySearchView 样式呢?

更新 #1

我不知道这是否正常,但我也有一个问题,如果我使用 this approach 覆盖 Button 样式,那么我的按钮会丢失所有填充,因此变得太小:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="buttonStyle">@style/MyButton</item>
    <item name="android:buttonStyle">@style/MyButton</item>
</style>

<style name="MyButton" parent="android:style/Widget.Button">
    <item name="android:textColor">@color/white</item>
    <item name="android:background">@color/red</item>
</style>

【问题讨论】:

  • 你确定不只是与背景融为一体?
  • 是的,非常确定。我试过让父母Widget.AppCompat.Light.SearchView 然后Widget.AppCompat.SearchView。我还暂时将我的活动设置为红色背景(而不是白色),但仍然没有 searchIcon 的迹象。
  • 嗯,那还不确定。我无法重现该问题。您是否尝试过仅在样式中指定默认图标,看看会发生什么?它是@drawable/abc_ic_search_api_material(可能是abc_ic_search_api_mtrl_alpha,取决于您的支持库版本)。
  • 嗯,Button 问题可能是因为您将颜色设置为backgroundButtons 使用特定的背景可绘制对象来获得它们的默认外观,如果您要包装宽度/高度,当该可绘制对象消失时,除了文本之外没有任何东西可以包装。您正在使用 appcompat SearchView,是吗?
  • “您正在使用 appcompat SearchView,是吗?”...“没有。” :-/现在排序-谢谢。你想把它作为答案发布,以便我接受。

标签: android searchview android-styles


【解决方案1】:

似乎这里的问题是使用具有支持类的样式的框架类。与AppCompat 主题一起使用的正确SearchView 类是android.support.v7.widget.SearchView,而不是android.widget.SearchView

框架View 不会寻找为支持View 定义的属性,因此这些属性的设置将丢失。由于在SearchView 的构造过程中找不到有效资源,因此每个图标的ImageButton 的图像都将设置为null,这可以解释为什么多个图标似乎在这种样式下消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多