如何将搜索小部件图标更改为 androidx 的白色

How can I change the Search Widget Icon to be white for androidx

我已经通读了我能找到的所有问题,并尝试了很多方法但没有任何效果。很多答案似乎都与 v7 支持库有关。我正在使用 AndroidX 和 Kotlin。我想将 searchIcon 和 closeIcon 的颜色更改为白色。我还想删除 searchHintIcon。

AndroidManifest.xml

    <activity
        android:name=".MainActivity"
        android:theme="@style/AppTheme"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

菜单

    <item
    android:id="@+id/action_search"
    android:orderInCategory="1"
    app:showAsAction="ifRoom"
    android:title=""
    app:actionViewClass="androidx.appcompat.widget.SearchView" />

styles.xml (值-v21)

<resources>

<style
    name="AppTheme"
    parent="@style/Theme.AppCompat.Light.DarkActionBar">

    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    
    <!--changes the search text to white -->
    <item name="android:editTextColor">@color/white</item>

    <item name="searchViewStyle">@style/AppTheme.SearchView</item>
</style>

<style name="AppTheme.SearchView" parent="Widget.AppCompat.SearchView">
    <item name="searchIcon">@drawable/ic_action_search_white</item>
    <item name="android:searchIcon">@drawable/ic_action_search_white</item>
    <item name="android:closeIcon">@drawable/ic_action_clear_white</item>
    <item name="closeIcon">@drawable/ic_action_clear_white</item>
    <item name="searchHintIcon">@null</item>
</style>

</resources>

我没有使用工具栏,只使用操作栏。如果可能的话,我想使用 xml 更改图标颜色。如果有帮助,很高兴添加工具栏。

我终于弄明白了,所以我会回答我自己的问题。 我已将菜单更改为:

<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<item
    android:id="@+id/action_search"
    android:title="Search"
    android:icon="@drawable/ic_action_search_white"
    app:showAsAction="ifRoom|collapseActionView"
    app:actionViewClass="androidx.appcompat.widget.SearchView"/>

collapseActionView 修复了该问题并允许拾取图标。我拒绝使用它,因为我的行为很奇怪。

更新 OnCreateOptionsMenu 后一切正常,图标为白色

override fun onCreateOptionsMenu(menu: Menu): Boolean {

    menuInflater.inflate(R.menu.menu_main, menu)
    menuInflater.inflate(R.menu.menu_search, menu)

    sv = menu.findItem(R.id.action_search).actionView as SearchView
    sv.isSubmitButtonEnabled = false
    sv.setOnQueryTextListener(this)

    return true
}

为了完整起见,这里是其余代码:

override fun onQueryTextSubmit(query: String?): Boolean {
    getData(query.toString())
    return true
}

override fun onQueryTextChange(newText: String?): Boolean {
    getData(newText.toString())
    return true
}

private fun getData(newText: String) {
    searchTerm = "%".plus(newText).plus("%")
    //todo ... get the data from the db
}