如何更改SearchView默认图标?

jmh*_*let 16 customization android android-actionbar searchview

我使用了" Android Action Bar Style Generator "来生成我自己的Holo主题.然后我在操作栏中添加了两个图标,一个用于searchFilter,另一个用于文件选择器,两个图标都是白色.文件选择器图标(在右侧)看起来不错,但不知何故搜索图标看起来是深灰色.在搜索文本视图中键入时,关闭按钮也显示为深灰色.

我尝试过更改动作栏的颜色以及搜索视图的颜色,但没有成功.为什么搜索视图显示此颜色?我该怎么改变它?

ActionBar有两个动作

非常感谢你.

更新:我认为我的应用程序正在使用我的图标,但它没有,它使用默认的搜索视图图标,所以我的问题实际上是,如何更改搜索视图的默认图标?menu.xml文件中的这句话不起作用:

android:icon="@drawable/selectable_header_search"
Run Code Online (Sandbox Code Playgroud)

Mat*_*ers 18

不幸的是,没有简单的方法将SearchView图标更改为自定义drawable,因为theme属性searchViewSearchIcon不公开.有关详情,请参阅答案.

但是,我认为你的问题是由错误的主题继承引起的.请android:Theme.Holo.Light.DarkActionBar用作主题的基础.然后,操作栏上的默认图标应为浅色.

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
    ...
</style> 
Run Code Online (Sandbox Code Playgroud)


msp*_*ant 10

由于searchViewSearchIcon属性不公开,您可以使用以下代码更改图标:

int searchIconId = searchView.getContext().getResources().getIdentifier("android:id/search_button",null, null);
ImageView searchIcon = (ImageView) searchView.findViewById(searchIconId);
searchIcon.setImageResource(R.drawable........);
Run Code Online (Sandbox Code Playgroud)

  • `ImageView searchIconView =(ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_button); searchIconView.setImageResource(R.drawable.ic_nav_search);`将适用于android 4+ (4认同)
  • 这会抛出nullPointerException (3认同)

小智 6

尝试在showAsAction中设置此选项:*MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW*

如果没有此选项,SearchView不会采用您为操作设置按钮的图标.

menu.add("Search")
            .setIcon(
                    getResources().getDrawable(
                            R.drawable.selectable_header_search))
            .setActionView(searchView)
            .setShowAsAction(
                    MenuItem.SHOW_AS_ACTION_ALWAYS
                            | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW
                            | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
Run Code Online (Sandbox Code Playgroud)