Mau*_*rix 12 android android-actionbar
我有一个Activity是extends ActionBarActivity取自ActionBarCompat代码示例,我想在运行时显示/隐藏菜单项(操作).
我已经尝试使用setVisible()上MenuItem和适用于ICS,但在预ICS只更改菜单项目(菜单按钮按下),而知名度ActionBar没有得到通知的菜单更改.
有解决方案吗 提前致谢!
我在/ res/menu /下创建了多个动作栏项目的替代品.我让一名成员指出我现在正在使用哪一个.要更换菜单,我打电话:
protected void setMenuResource(int newMenuResourceId)
{
_menuResource = newMenuResourceId;
invalidateOptionsMenu();
}
Run Code Online (Sandbox Code Playgroud)
我将onCreateOptionsMenu()覆盖为:
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
if (_menuResource != 0)
{
getSupportMenuInflater().inflate(_menuResource, menu);
return true;
}
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我想更改动作项目,我打电话:
setMenuResource(R.menu.actionbar_menu_X);
Run Code Online (Sandbox Code Playgroud)
这就是我解决它的方法:
在actionbarcompat项目的ActionBarHelperBase.java中
...
private View addActionItemCompatFromMenuItem(final MenuItem item) {
final int itemId = item.getItemId();
Run Code Online (Sandbox Code Playgroud)
....
这个类的创建者复制了object的属性,但没有复制item的id,所以以后不可能用5n id找到它。
所以我在该方法中添加了它:
...
actionButton.setId(itemId);
...
Run Code Online (Sandbox Code Playgroud)
在同一堂课中我只是使用:
@Override
public void hideMenuItemById(int id, boolean show){
getActionBarCompat().findViewById(id).setVisibility(show? View.VISIBLE: View.GONE);
}
Run Code Online (Sandbox Code Playgroud)
希望对您有帮助。
| 归档时间: |
|
| 查看次数: |
1948 次 |
| 最近记录: |