如何更改Android搜索视图图标颜色?默认情况下,颜色为白色,是否可以更改图标颜色。
我试过了:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/action_search"
android:actionViewClass="android.widget.SearchView"
android:icon="@drawable/ic_theme_blue_menu"
android:showAsAction="always"
android:title="@string/search_actionbar"/>
<item
android:id="@+id/slider_menu"
android:icon="@drawable/ic_slider_menu"
android:orderInCategory="100"
android:showAsAction="always"/>
</menu>
但我需要在代码中更改它,而不是在布局文件中。有可能吗?
答案 0 :(得分:2)
很遗憾,没有简单的方法可以将SearchView
图标更改为自定义drawable,因为主题属性searchViewSearchIcon
不公开。有关详细信息,请查看this答案。
请使用android:Theme.Holo.Light.DarkActionBar
作为主题的基础。然后,操作栏上的默认图标应为浅色。
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
...
</style>
答案 1 :(得分:2)
我做了什么,我创造了一种改变任何可绘制颜色的方法
public Drawable changeDrawableTint(Drawable drawable, int color){
final Drawable wrappedDrawable = DrawableCompat.wrap(drawable);
DrawableCompat.setTintList(wrappedDrawable, ColorStateList
.valueOf(color));
return wrappedDrawable;
}
,即使在Android版本的棒棒糖前,我也会获得搜索视图菜单项,并调用所需颜色的方法
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
/**
* We inflate the correct activity menu
*/
getMenuInflater().inflate(R.menu.menu_partner_list, menu);
searchViewMenuItem = menu.findItem(R.id.action_search);
if(searchViewMenuItem!=null && searchViewMenuItem.getIcon()!=null){
searchViewMenuItem.setIcon(Utils.getInstance()
.changeDrawableTint(searchViewMenuItem.getIcon(),
Color.WHITE));
}
setUpSearchView(menu);
shouldHideMenuActions();
return true;
}
这是菜单
<?xml version="1.0" encoding="utf-8"?>
<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"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="always|collapseActionView"
android:icon="@drawable/ic_search"
android:title="@string/search" />
</menu>
答案 2 :(得分:-2)
您可以在java类中使用以下代码:
mView.getBackground().setColorFilter(Color.parseColor("#ffffff"), PorterDuff.Mode.LIGHTEN);
上面的这一行将视图的颜色更改为您在Color.parseColor()中建议的颜色份额,以及使用PorterDuff.Mode定义颜色的阴影。单击按钮调用上面的代码,检查颜色更改是否生效。