我想根据特定条件启用/禁用项目......
使用选项菜单,您可以执行以下操作:
.setGroupEnabled(0, false);
但我不知道如何使用上下文菜单
我该怎么做?
由于
编辑:这些项目位于充气菜单
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options, menu);
}
答案 0 :(得分:1)
您可以在onCreateContextMenu
方法中在运行时修改/创建上下文菜单。
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
MyObject obj = (MyObject) myListView.getItemAtPosition(info.position);
menu.setHeaderTitle("Selection Options");
menu.add(0, v.getId(), 0, "Remove " + obj.name);
}
以下是我从this post获取的一些示例代码。通过重写此方法,您可以将菜单修改为其创建的菜单。只需在此处添加一些条件来控制您的不同场景。
答案 1 :(得分:0)
是的,您可以在运行时在 onCreateContextMenu
方法中启用/禁用上下文菜单项。
下面是一个例子:
@Override
public void onCreateContextMenu(@NonNull ContextMenu menu, @NonNull View v,
@Nullable ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
menu.setHeaderTitle("Title text");
MenuInflater inflater = getActivity().getMenuInflater();
inflater.inflate(R.menu.history_overflow_item_menu, menu); // Your menu xml file
// Get menu item using index and set enablity with your conditions.
if (abc == bcd) {
menu.getItem(0).setEnabled(false);
}
}