禁用不可见视图组的单击侦听器



我有一个在某些情况下View.INVISIBLE的视图组。在这种状态下,我希望视图组或其子视图不响应任何点击事件。

根据 android 中View.INVISIBLE的默认实现,即使视图组的可见性不可见,视图组内的子视图仍然可以单击。我知道我可以将可见性设置为View.GONE但我不希望删除整个视图组。

我尝试在视图组上setClickable设置为true,但它不起作用,子视图仍然响应点击。我不想遍历视图组中的所有视图并单独禁用它们,因为这是我必须经常做的事情。

是否有更好的解决方案来防止视图组中的所有子视图接收点击事件?

也许你可以试试'setOnClickListener'。

viewgroup.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return true; // return true can intercept click event go down
}
});

并且您希望接收视图组点击事件。

viewgroup.setOnTouchListener(null)

你试过setEnabled(false)吗?

如果这不起作用,您可以像这样将所有视图子项设置为禁用:

LinearLayout layout = (LinearLayout) findViewById(R.id.my_layout);
for (int i = 0; i < layout.getChildCount(); i++) {
View child = layout.getChildAt(i);
child.setEnabled(false);
}

最新更新