上下文操作栏将按钮设置为不可见
本文关键字:设置 按钮 操作 上下文 | 更新日期: 2023-09-27 18:27:38
我实现了一个带有两个按钮的自定义上下文操作栏:一个用于从列表视图中删除选定项目,另一个用于编辑选定项目。我想做的是,当选择了两个或多个项目时,使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;
}
这就是我处理多个项目的方式:
private void listView_SelectedIndexChanged(object sender, EventArgs e)
{
if(listView.SelectedIndices.Count > 1)
{
MessageBox.Show("Multiple rows selected!");
}
}
如果选定的索引发生更改,请检查检查了多少索引。如果超过1(=多个),则激发代码。
我终于发现了我的错误!它没有声明:
if (listview.CheckedItemCount > 1) {
disableButtonFlag = true;
} else
disableButtonFlag = false;
在我的OnCreateActionMode
方法中并在OnItemCheckedStateChanged()
方法中调用Activity.InvalidateOptionsMenu()
时,我应该在OnPrepareActionMode()
方法中声明这些行,然后在OnItemCheckedStateChanged()
方法中调用ActionMode.Invalidate()
。