重写SearchView样式时,Android SearchView图标消失

重写SearchView样式时,Android SearchView图标消失,android,searchview,android-styles,Android,Searchview,Android Styles,我在活动的主要内容区域有一个SearchView 我需要覆盖style.xml文件中的SearchView样式(以便删除SearchView的下划线-) 但是,当我覆盖SearchView样式时,其searchIcon将从UI中消失: <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="searchViewStyle">@style/MySearchView&

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

我需要覆盖style.xml文件中的SearchView样式(以便删除SearchView的下划线-)

但是,当我覆盖
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>

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


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

你确定它不仅仅是与背景混合在一起吗?是的,很确定。我已经尝试过制作父级
Widget.AppCompat.Light.SearchView
,然后制作
Widget.AppCompat.SearchView
。我还临时给我的活动设置了红色背景(而不是白色),但仍然没有搜索图标的迹象。嗯,那就不确定了。我无法重现这个问题。您是否尝试过在样式中指定默认图标,看看会发生什么?它是
@drawable/abc\u ic\u search\u api\u material
(可能是
abc\u ic\u search\u api\u mtrl\u alpha
,取决于您的支持库版本)。那么,
按钮
的问题可能是因为您已将颜色设置为
背景<代码>按钮
s使用特定的背景可绘制以获得其默认外观,如果您正在包装宽度/高度,当该可绘制内容消失时,除了文本之外,没有其他内容可供包装。您正在使用appcompat
搜索视图,是吗?“您正在使用appcompat搜索视图,是吗?”。。。“没有。”:-/现在排序-谢谢。你想把它作为一个答案,这样我就可以接受它。
<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>