我尝试使用以下代码禁用菜单组,但它不起作用,菜单项仍然启用.你能告诉我有什么问题吗?
RES /菜单/ menu.xml文件:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/a" android:title="A"></item>
<item android:id="@+id/b" android:title="B">
<menu>
<item android:id="@+id/c" android:title="C" />
<item android:id="@+id/d" android:title="D" />
<group android:id="@+id/group_1">
<item android:id="@+id/e" android:title="E" />
<item android:id="@+id/f" android:title="F" />
</group>
</menu>
</item>
</menu>
Run Code Online (Sandbox Code Playgroud)
Java的:
public boolean onPrepareOptionsMenu (Menu menu) {
menu.setGroupEnabled (R.id.group_1, false); // does not work
menu.setGroupVisible (R.id.group_1, false); // does not work either
return super.onPrepareOptionsMenu (menu);
}
public boolean onCreateOptionsMenu (Menu menu) {
getMenuInflater ().inflate (R.menu.menu, menu);
return true;
}
Run Code Online (Sandbox Code Playgroud)
Pat*_*ick 18
感谢user432209的信息,这里是答案:
menu.findItem (R.id.b).getSubMenu ().setGroupVisible (R.id.group_1, false);
Run Code Online (Sandbox Code Playgroud)
我不确定你是否可以使用这样的团体,但试试这个(值得一试):
MenuItem item = menu.findItem(R.id.group_1);
item.setVisible(true);
item.setEnabled(false);
Run Code Online (Sandbox Code Playgroud)
编辑:您的问题是您的菜单结构以及如何onCreateOptionsMenu使用父/子菜单在里面创建菜单.
您为父菜单而不是子菜单创建菜单,这就是调用setGroupEnabled和setGroupVisible失败的原因.您需要创建一个onCreateOptionsMenu表示子对象的对象,以便传递该对象onPrepareOptionsMenu并使您的代码起作用.
| 归档时间: |
|
| 查看次数: |
9535 次 |
| 最近记录: |