Android 更改选项菜单图标
假设我有一个选项菜单,如下所示:Android 更改选项菜单图标,android,onclick,android-optionsmenu,Android,Onclick,Android Optionsmenu,假设我有一个选项菜单,如下所示: @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_home_page, menu); final MenuItem myActionMenuItem = menu.findItem(R.id.action_search); mSearchView = (SearchView) myActionMe
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_home_page, menu);
final MenuItem myActionMenuItem = menu.findItem(R.id.action_search);
mSearchView = (SearchView) myActionMenuItem.getActionView();
mSearchView.setQueryHint("Enter text to search(min. 3 chars)...");
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(final String searchQuery) {
if (!mSearchView.isIconified()) {
mSearchView.setIconified(true);
}
mSearchView.setQuery(searchQuery, false);
return false;
}
@Override
public boolean onQueryTextChange(String s) {
return false;
}
});
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
saveState();
finish();
} else if (item.getItemId() == R.id.action_bookmark) {
FragmentAdapter adapter = (FragmentAdapter) mViewPager.getAdapter();
PageFragment fragment = (PageFragment)adapter.instantiateItem(mViewPager,mViewPager.getCurrentItem());
fragment.getContent();
Toast.makeText(this, "Bookmark Added", Toast.LENGTH_SHORT).show();
}
return super.onOptionsItemSelected(item);
}
有没有办法检查哪个图标设置为“选项”菜单项并在单击时用另一个图标更改它
以下是选项菜单的xml:
<item
android:id="@+id/action_bookmark"
android:title="Bookmark"
app:showAsAction="always|collapseActionView"
android:icon="@drawable/ic_bookmark_empty" />
单击后,我想检查书签中的图标并对其进行更改。您可以使用此代码
菜单.getItem(0).setIcon(getResources().getDrawable(R.drawable.ic_bookmark_empty))代码>如果要检查当前设置了哪个可绘制文件,可以使用此代码
item.getIcon().getConstantState().equals
(getResources().getDrawable(R.drawable.ic_bookmark_empty).getConstantState())
对于设置新的可绘制图形,可以使用以下代码
item.setIcon(R.drawble.ic_bookmark_empty)
您需要在OnOptions ItemSelected中检查以下条件:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
saveState();
finish();
} else if (item.getItemId() == R.id.action_bookmark) {
if(item.getIcon() ==R.drawable.ic_bookmark_empty)
{
// call bookmark code
item.setIcon(R.drawable.ic_bookmark_filled); // set your desired bookmark icon
} else {
// call remove bookmark code
item.setIcon(R.drawable.ic_bookmark_empty);
}
FragmentAdapter adapter = (FragmentAdapter) mViewPager.getAdapter();
PageFragment fragment = (PageFragment)adapter.instantiateItem(mViewPager,mViewPager.getCurrentItem());
fragment.getContent();
Toast.makeText(this, "Bookmark Added", Toast.LENGTH_SHORT).show();
}
return super.onOptionsItemSelected(item);
}
我可以在onCreate中更改菜单项图标吗?即,如果我从列表中单击书签,它将在webview中显示我的数据,书签图标已填充