如何删除或更改SearchView actionBar中的searchview图标?

Sir*_*iri 3 android android-appcompat android-actionbar searchview

截图

如何删除或更改edittext中的搜索视图图标?我正在使用Appcompat库.

我使用下面的代码来修改和删除但它不起作用:

SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    View search_mag_icon = (View)searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon);
        search_mag_icon.setBackgroundResource(R.drawable.ic_stub);
        //search_mag_icon.setVisibility(View.GONE);
Run Code Online (Sandbox Code Playgroud)

Sar*_*glt 20

终于找到了解决方案.请尝试以下方法:

try {
    Field mDrawable = SearchView.class.getDeclaredField("mSearchHintIcon");
    mDrawable.setAccessible(true);
    Drawable drawable =  (Drawable)mDrawable.get(your search view here);
    drawable.setAlpha(0);
} catch (Exception e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

  • 添加此行 **drawable.setBounds(0,0,0,0)** 使您能够以 0 左填充显示提示,否则提示将显示在仍然透明存在的图标之后。 (2认同)

ian*_*ake 4

根据AppCompat v21 博客文章,您可以为您的 提供自定义样式SearchView,覆盖搜索图标等内容:

<style name="Theme.MyTheme" parent="Theme.AppCompat">
    <item name="searchViewStyle">@style/MySearchViewStyle</item>
</style>
<style name="MySearchViewStyle" parent="Widget.AppCompat.SearchView">
    <!-- Search button icon -->
    <item name="searchIcon">@drawable/custom_search_icon</item>
</style>
Run Code Online (Sandbox Code Playgroud)