Android 禁用/过滤布局的任何触摸事件

Android 禁用/过滤布局的任何触摸事件,android,android-layout,touch-event,Android,Android Layout,Touch Event,是否可以通过以ParentLayout为目标来禁用布局内所有视图的触摸事件。我知道通过查看布局中包含的每个单独视图是可能的,但如果有一种方法可以完成完整的布局,那将非常有用。我已经试过下列方法,但都是徒劳的 ParentLayout.setClickable(false); ParentLayout.onFilterTouchEventForSecurity(event); ParentLayout.onTouchEvent(event); ParentLayout.setOnTouchL

是否可以通过以ParentLayout为目标来禁用布局内所有视图的触摸事件。我知道通过查看布局中包含的每个单独视图是可能的,但如果有一种方法可以完成完整的布局,那将非常有用。我已经试过下列方法,但都是徒劳的

ParentLayout.setClickable(false);

ParentLayout.onFilterTouchEventForSecurity(event);

ParentLayout.onTouchEvent(event);

ParentLayout.setOnTouchListener(l);
... 

和其他类似的方式。任何帮助都将不胜感激。

考虑采取以下方法

 public void disableTouch(ViewGroup viewGroup) {
    int childCount = viewGroup.getChildCount();
    for (int i = 0; i < childCount; i++) {
        View view = viewGroup.getChildAt(i);
        view.setClickable(false);
        if (view instanceof ViewGroup) {
            disableTouch((ViewGroup) view);
        }
    }
}
public void disableTouch(视图组视图组){
int childCount=viewGroup.getChildCount();
for(int i=0;i
它将遍历所有子对象,并为每个子对象禁用触摸事件

  • 禁用父视图中的所有触摸事件<代码>dispatchTouchEvent()
    onInterceptTouchEvent()
    都可以实现这一目标
  • 将android:duplicateParentState=“true”设置为所有子视图,并设置 父级
    android:enable=“false”

  • 为了实现infinte滚动,我的ViewPager有大量的项目。准确地说是2147483647。此代码可能会遍历所有这些项,因此不可行。OMG!2147483647个视图。!!所有的都不是一次激活的,只有需要的才会被实例化并很快删除。此数字只是为视图保留的位置数。这就是为什么我要寻找一个一次性完成的东西。将相对布局作为父级,在不同的父级布局上有一个透明的图像视图,并捕捉对它的单击,而不是对视图的单击..:而且他再也没有回来。