设置SearchView清除按钮颜色

Sun*_*kas 11 android searchview android-support-library

我正在使用工具栏创建一个searchview onCreateOptionsMenu,但无法获得X最初为白色的清除按钮.开始输入字母时变为白色.清理后它也会保持白色.

清除按钮的示例具有灰色而不是白色

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    MenuInflater menuInflater = getMenuInflater();
    menuInflater.inflate(R.menu.responsible_menu, menu);
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); //TODO: May not be needed?

    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener()
    {
        @Override
        public boolean onQueryTextSubmit(String query)
        {
            mAdapter.updateUIWithFilter(query);
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText)
        {
            mAdapter.updateUIWithFilter(newText);
            return false;
        }
    });

    // Does not work! Still not white.
    ImageView searchClose = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
    searchClose.setColorFilter(Color.argb(255, 255, 255, 255));

    searchClose.setAlpha(255);

    return true;
}
Run Code Online (Sandbox Code Playgroud)

responsible_menu.xml:

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

    <item
        android:id="@+id/menu_search"
        android:title="@string/search"
        appcompat:actionViewClass="android.support.v7.widget.SearchView"
        appcompat:showAsAction="always"/>

</menu>
Run Code Online (Sandbox Code Playgroud)

Sun*_*kas 20

找到了解决方案.但是,对更好的感兴趣.

从24pt白色的https://www.google.com/design/icons/#ic_clear下载了"清除按钮"图片,并将此代码添加到了onCreateOptionsMenu

    // Does help!
    ImageView searchClose = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
    searchClose.setImageResource(R.drawable.ic_clear_white_24dp);
Run Code Online (Sandbox Code Playgroud)


小智 5

您也可以从 XML 设置它。我正在使用支持库 24.2.1 和一个主题的活动,其父项是“Theme.AppCompat.Light”和 ActionBar 中的 android.support.v7.widget.SearchView。

您可以在您的活动主题中设置一个 actionBarWidgetTheme,如下所示:

<style name="ActivityTheme" parent="Theme.AppCompat.Light">
    <item name="actionBarWidgetTheme">@style/MyActionBarWidgetTheme</item>
</style>
Run Code Online (Sandbox Code Playgroud)

然后定义 MyActionBarWidgetTheme 并在那里设置你想要的颜色:

<style name="MyActionBarWidgetTheme">
    <item name="android:textColorSecondary">@android:color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud)
  • android:textColorSecondary 适用于关闭图标

  • android:textColorPrimary 适用于您输入的文本

  • colorControlActivated 应用于光标

  • android:textColorHint 适用于提示文本


Mac*_*ver 5

尝试这个:

    ImageView searchClose = searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
    searchClose.setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP);
Run Code Online (Sandbox Code Playgroud)