上下文操作栏将按钮设置为不可见

时间:2014-10-23 13:36:15

标签: c# button xamarin contextual-action-bar

我已经实现了一个带有两个按钮的自定义上下文操作栏:一个用于从列表视图中删除所选项目,另一个用于编辑所选项目。我想要做的是在选择了两个或更多项目时使editButton不可见。我尝试这样做但没有任何反应:

public void OnItemCheckedStateChanged (ActionMode mode, int position, long id, bool check)
{
    SetSubtitle (mode);
    if (listview.CheckedItemCount > 1) {
        disableButtonFlag = true;
    } else
        disableButtonFlag = false;

    self.InvalidateOptionsMenu();
}

public bool OnCreateActionMode (ActionMode mode, IMenu menu)
{
    self.MenuInflater.Inflate (Resource.Menu.CAB_menu, menu);
    if (disableButtonFlag) {
        menu.FindItem(Resource.Id.action_edit).SetVisible(false);
    } else {
        menu.FindItem(Resource.Id.action_edit).SetVisible(true);            
    }
    mode.Title = "Select Items";
    SetSubtitle (mode);
    return true;
}

2 个答案:

答案 0 :(得分:0)

这是处理多个项目对我有用的方法:

private void listView_SelectedIndexChanged(object sender, EventArgs e)
        {
            if(listView.SelectedIndices.Count > 1)
            {
                MessageBox.Show("Multiple rows selected!");
            }
        }  

如果选择了索引更改,请检查检查的索引数。如果超过1(=多个),请激活您的代码。

答案 1 :(得分:0)

最后我发现了自己的错误!这不是宣布:

  if (listview.CheckedItemCount > 1) {
        disableButtonFlag = true;
    } else
        disableButtonFlag = false;

在我的OnCreateActionMode方法中并在Activity.InvalidateOptionsMenu()方法中调用OnItemCheckedStateChanged()我应该在OnPrepareActionMode()方法中声明这些行,然后在ActionMode.Invalidate()内调用OnItemCheckedStateChanged() {{1}}方法。