1

我想根据某些条件启用/禁用项目...

使用选项菜单,您可以:

.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);
    }
4

2 回答 2

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); 
}

这是我从这篇文章中获取的一些示例代码。通过覆盖此方法,您可以在创建菜单时对其进行修改。只需在此处添加一些条件来控制您的不同场景。

于 2013-07-01T12:35:42.547 回答
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);
    }
}
于 2021-01-09T03:04:07.070 回答