我找到了另一种方法来更改搜索图标,与Diego Pino的答案在同一行上,但直接在onPrepareOptionsMenu
中进行。
在您的menu.xml文件中(与之前相同)
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_fav"
android:title="@string/action_websearch"
android:showAsAction="always|never"
android:actionViewClass="android.widget.SearchView" />
</menu>
在您的活动中:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem searchViewMenuItem = menu.findItem(R.id.action_search);
mSearchView = (SearchView) searchViewMenuItem.getActionView();
int searchImgId = getResources().getIdentifier("android:id/search_button", null, null);
ImageView v = (ImageView) mSearchView.findViewById(searchImgId);
v.setImageResource(R.drawable.your_new_icon);
mSearchView.setOnQueryTextListener(this);
return super.onPrepareOptionsMenu(menu);
}
我按照这个示例更改了EditText
的背景。你可以对你的 SearchView
中的所有图标/背景都这样做,要找到正确的ID,您可以在这里查找。
2017年11月更新:
自从此答案发布以来,Android已更新,通过XML可以更改搜索图标。
如果您的目标低于Android v21,则可以使用:
<android.support.v7.widget.SearchView
android:layout_width="wrap_content"
android:layout_height="match_parent"
app:searchIcon="@drawable/ic_search_white_24dp"
app:closeIcon="@drawable/ic_clear_white_24dp" />
或者 v21 及以上版本:
<SearchView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:searchIcon="@drawable/ic_search_white_24dp"
android:closeIcon="@drawable/ic_clear_white_24dp" />
还有更多的选项:
closeIcon
commitIcon
goIcon
searchHintIcon
searchIcon
voiceIcon
android.support.v7.widget.SearchView
可以使用app:searchIcon="@drawable/ic_your_custom_icon"
进行样式设置。 - Afilu