我在活动的主要内容区域中有一个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,但我想使用默认的。
那么如何在不丢失默认MySearchView
的情况下指定searchIcon
样式?
更新#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>
答案 0 :(得分:1)
这里的问题似乎是使用一个带有支持类风格的框架类。与SearchView
主题一起使用的正确AppCompat
类为android.support.v7.widget.SearchView
,而不是android.widget.SearchView
。
框架View
不会查找为支持View
定义的属性,因此这些属性的设置将会丢失。由于在SearchView
构造期间没有找到有效资源,因此null将被设置为每个图标的ImageButton
的图像,这可以解释为什么多个图标似乎已经消失了这种风格。