Android SearchView 样式被覆盖时 SearchView 图标消失
Android SearchView icon disappears when SearchView style is overridden
我的 activity.
的主要内容区域中有一个 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>
我知道我可以为 searchIcon
指定我自己的可绘制对象,但我想使用默认的。
那么如何在不丢失默认 searchIcon
的情况下指定 MySearchView
样式?
更新 #1
我不知道这是否正常,但我也有一个问题,如果我使用 this approach 覆盖按钮样式,那么我的按钮将失去所有填充,因此变得太小:
<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>
这里的问题似乎是使用框架 class,其样式旨在支持 class。与 AppCompat
主题一起使用的正确 SearchView
class 是 android.support.v7.widget.SearchView
,而不是 android.widget.SearchView
.
框架 View
不会寻找为支持 View
定义的属性,因此这些属性的设置将丢失。由于在 SearchView
的构建过程中找不到有效资源,因此将 null 设置为每个图标的图像 ImageButton
,这可以解释为什么多个图标似乎随着这种风格消失了。
我的 activity.
的主要内容区域中有一个 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>
我知道我可以为 searchIcon
指定我自己的可绘制对象,但我想使用默认的。
那么如何在不丢失默认 searchIcon
的情况下指定 MySearchView
样式?
更新 #1
我不知道这是否正常,但我也有一个问题,如果我使用 this approach 覆盖按钮样式,那么我的按钮将失去所有填充,因此变得太小:
<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>
这里的问题似乎是使用框架 class,其样式旨在支持 class。与 AppCompat
主题一起使用的正确 SearchView
class 是 android.support.v7.widget.SearchView
,而不是 android.widget.SearchView
.
框架 View
不会寻找为支持 View
定义的属性,因此这些属性的设置将丢失。由于在 SearchView
的构建过程中找不到有效资源,因此将 null 设置为每个图标的图像 ImageButton
,这可以解释为什么多个图标似乎随着这种风格消失了。