Android:似乎无法主题化SearchView

3npbholx  于 2023-01-11  发布在  Android
关注(0)|答案(1)|浏览(144)

我一直真实的努力地尝试主题化SearchView,我的API也是sdk 21,所以我应该可以使用新的样式选项。
具体来说,我希望当我点击搜索图标时出现的应用程序栏内的文本字段是主题化的,我希望最终使背景为白色,文本/光标为蓝色或黑色。
这是我的styles.xml,最后一个主题是我正在做的新的SearchTheme,实际的值并不重要,它们是垃圾值,我只是想改变一下。

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowBackground">@android:color/white</item>
        <item name="android:searchViewStyle">@style/AppTheme.SearchTheme</item>
    </style>

    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

    <style name="AppTheme.PreferencesTheme" parent="AppTheme">
        <item name="android:windowBackground">@android:color/white</item>
    </style>

    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
        <item name="android:windowBackground">@android:color/white</item>
        <item name="android:searchViewStyle">@style/AppTheme.SearchTheme</item>
    </style>

    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light">
        <item name="android:windowBackground">@android:color/white</item>
        <item name="android:searchViewStyle">@style/AppTheme.SearchTheme</item>
    </style>

    <style name="AppTheme.SearchTheme" parent="Theme.AppCompat.Light">
        <item name="android:closeIcon">@drawable/contacts5icon</item>
        <item name="android:voiceIcon">@drawable/contacts5icon</item>
        <item name="android:queryBackground">@android:color/black</item>
        <item name="android:windowBackground">@android:color/white</item>
    </style>

</resources>

我已经将AppTheme.SearchTheme分配给了布局中使用的其他主主题,但是我所做的一切似乎都没有效果,值似乎没有改变。
我以前没有真正搞砸过Android主题,所以我有点迷路了。

4nkexdtk

4nkexdtk1#

根据Chris巴内斯关于在前棒棒糖机器人上使用材质设计的介绍,这应该会帮助你走上正确的道路。在主样式下设置项目属性searchViewStyle,并使用Widget.AppCompat.SearchView样式扩展名。
你可以使用queryBackground项目属性来改变文本字段的背景。其他属性的详细信息如下。

<style name=”Theme.MyTheme” parent=”Theme.AppCompat”>
<item name=”searchViewStyle”>@style/MySearchViewStyle</item> 
</style>
<style name=”MySearchViewStyle” parent=”Widget.AppCompat.SearchView”>
<!-- Background for the search query section (e.g. EditText) -->
<item name="queryBackground">...</item>
<!-- Background for the actions section (e.g. voice, submit) -->
<item name="submitBackground">...</item>
<!-- Close button icon -->
<item name="closeIcon">...</item>
<!-- Search button icon -->
<item name="searchIcon">...</item>
<!-- Go/commit button icon -->
<item name="goIcon">...</item>
<!-- Voice search button icon -->
<item name="voiceIcon">...</item>
<!-- Commit icon shown in the query suggestion row -->
<item name="commitIcon">...</item>
<!-- Layout for query suggestion rows -->
<item name="suggestionRowLayout">...</item>
</style>

更多here

相关问题