首页 文章

在Android中的MutliChoiceMode中,如何防止在ListView行中单击元素

提问于
浏览
0

我有一个Listview设置与自定义适配器 . 每个ListView的行都有一个按钮和一个用户可以与之交互的搜索栏 . 我还实现了MultiChoiceModeListener来处理长按ListView行以允许用户删除多行 .

我需要的是阻止用户在ListView处于MultiSelect模式时与每个ListView的行元素(按钮,搜索栏等)交互,通过禁用它们,然后在用户退出多选模式后启用它们 .

有一个简单的方法吗?我试过添加:

for(int i = 0; i < adapter.getCount(); i++){
        View v = promptListView.getChildAt(i);
        v.setEnabled(false);
    }

onCreateActionMode() 方法,但没有成功,我仍然能够与行元素进行交互 . 非常感谢任何帮助,谢谢 .

2 回答

  • 1

    将属性 android:descendantFocusability="blocksDescendants" 添加到列表行的布局根目录中 . 这将阻止孩子获得焦点,并使用户能够独立地单击列表行或其任何子视图 . 现在,您可以使用 setEnabled() 禁用(灰显)并重新启用任何子视图,就像在代码中一样 . 或者,如果您只是想阻止用户与视图进行交互而不将其视为灰色,则可以使用 setClickable() .

  • 0

    您可以检查是否希望列表项元素进行交互以触摸自定义适配器内部,因此您可以在其中设置侦听器或禁用它们 .

相关问题