当SearchView样式被覆盖时,Android SearchView图标会消失

时间:2017-02-24 21:18:40

标签: android searchview android-styles

我在活动的主要内容区域中有一个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>

1 个答案:

答案 0 :(得分:1)

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

框架View不会查找为支持View定义的属性,因此这些属性的设置将会丢失。由于在SearchView构造期间没有找到有效资源,因此null将被设置为每个图标的ImageButton的图像,这可以解释为什么多个图标似乎已经消失了这种风格。

相关问题