更改SearchView返回图标颜色

5

搜索视图展开时显示的箭头颜色可以更改吗?

enter image description here

我已经尝试过一切方法,但没有结果。


请参考此链接:https://dev59.com/_mox5IYBdhLWcg3wWzJ7。 - Rohit5k2
这对我有用。 - pw2
5个回答

21
为了改变后退图标的颜色,您需要在android.support.v7.widget.Toolbar工具栏中添加以下属性。
app:collapseIcon="@drawable/back_arrow"

还要更改关闭按钮图标,请添加以下代码片段

ImageView searchClose = searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
searchClose.setImageResource(R.drawable.close);

1
简明、清晰、可行的答案,像个老板一样! - Xenolion
6
"searchClose" 实际上是用于移除当前搜索内容的按钮,而不是折叠按钮。 - Michael

1

在这里查看Abdul Rahman的答案(如何在Android操作栏中为SearchView添加样式

@Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        getMenuInflater().inflate(R.menu.main_menu, menu);
        restoreActionBar();

        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        MenuItem searchMenuItem = menu.findItem(R.id.action_search);
        SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchMenuItem);
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

        SearchView.SearchAutoComplete searchAutoComplete = (SearchView.SearchAutoComplete)searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
        searchAutoComplete.setHintTextColor(Color.WHITE);
        searchAutoComplete.setTextColor(Color.WHITE);

        View searchplate = (View)searchView.findViewById(android.support.v7.appcompat.R.id.search_plate);
        searchplate.setBackgroundResource(R.drawable.texfield_searchview_holo_light);

        ImageView searchCloseIcon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
        searchCloseIcon.setImageResource(R.drawable.clear_search);

        ImageView voiceIcon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_voice_btn);
        voiceIcon.setImageResource(R.drawable.abc_ic_voice_search);

        ImageView searchIcon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon);
        searchIcon.setImageResource(R.drawable.abc_ic_search);


        return super.onCreateOptionsMenu(menu);
    }

0

这里还有另一种方法:

<style name="ActivityTheme" parent="@android:style/Theme.DeviceDefault.Light">
    <item name="android:actionBarTheme">@style/searchActionBarTheme</item>
</style>

<style name="searchActionBarTheme" parent="@android:style/ThemeOverlay.Material.Dark.ActionBar">
    <item name="android:textColorPrimary">@color/back_key_color</item> <!-- back key color defined here!! -->
    <item name="android:actionBarWidgetTheme">@style/searchViewTheme</item>
</style>

<style name="searchViewTheme" parent="@android:style/ThemeOverlay.Material.Light">
    <item name="android:editTextColor">@color/edit_text_color</item>
    <item name="android:colorControlActivated">@color/search_cursor_color</item>
</style>

在Manifest.xml中为您的Activity使用ActivityTheme。

0

更改SearchView关闭图标颜色

SearchView  searchView = (SearchView) findViewById(R.id.searchView1);

    ImageView searchClose  = (ImageView) searchView.findViewById(search.getContext().getResources().getIdentifier("android:id/search_close_btn", null, null));

    searchClose.setColorFilter (R.color.black);

-1

我正在使用Toolbar中的SearchView,并且我可以使用反射更改颜色。

try {
    final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    Field mCollapseIcon = toolbar.getClass().getDeclaredField("mCollapseIcon");
    mCollapseIcon.setAccessible(true);
    Drawable drw = (Drawable) mCollapseIcon.get(toolbar);
    drw.setTint(color);
}
catch (Exception e) {
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接