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

时间:2012-11-27 06:09:34

标签: android android-layout ontouchevent

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

ParentLayout.setClickable(false);

ParentLayout.onFilterTouchEventForSecurity(event);

ParentLayout.onTouchEvent(event);

ParentLayout.setOnTouchListener(l);
... 

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

2 个答案:

答案 0 :(得分:4)

  1. 在父视图中禁用所有触摸事件。 dispatchTouchEvent()onInterceptTouchEvent()都可以实现这一目标。
  2. android:duplicateParentState="true"设置为所有子视图,然后进行设置 父android:enable="false"

答案 1 :(得分: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并禁用每个子项的触摸事件。