【发布时间】: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问题可能是因为您将颜色设置为background。Buttons 使用特定的背景可绘制对象来获得它们的默认外观,如果您要包装宽度/高度,当该可绘制对象消失时,除了文本之外没有任何东西可以包装。您正在使用 appcompatSearchView,是吗? -
“您正在使用 appcompat SearchView,是吗?”...“没有。” :-/现在排序-谢谢。你想把它作为答案发布,以便我接受。
标签: android searchview android-styles