4

是否可以通过定位 ParentLayout 来禁用布局内所有视图的触摸事件。我知道这可以通过浏览布局中包含的每个单独的视图来实现,但是如果有办法为完整的布局做到这一点,那将非常有帮助。我已经尝试了以下方法,但都是徒劳的。

ParentLayout.setClickable(false);

ParentLayout.onFilterTouchEventForSecurity(event);

ParentLayout.onTouchEvent(event);

ParentLayout.setOnTouchListener(l);
... 

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

4

2 回答 2

4
  1. 禁用父视图中的所有触摸事件。dispatchTouchEvent()并且 onInterceptTouchEvent()都可以实现这个目标。
  2. 设置android:duplicateParentState="true"为所有子视图,并设置父视图android:enable="false"
于 2012-11-27T06:36:41.400 回答
2

考虑采取以下方法。

 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);
        }
    }
}

它将遍历所有 Child 并禁用每个 Child 的触摸事件。

于 2012-11-27T06:18:05.447 回答