是否可以通过定位ParentLayout来禁用布局内所有视图的Touch事件。我知道这可以通过浏览布局中包含的每个单独的视图来实现,但是如果有完整布局的方法,这将是非常有用的。我已经尝试过以下但都是徒劳的。
ParentLayout.setClickable(false);
ParentLayout.onFilterTouchEventForSecurity(event);
ParentLayout.onTouchEvent(event);
ParentLayout.setOnTouchListener(l);
...
和其他类似的方式。任何帮助将不胜感激。
答案 0 :(得分:4)
dispatchTouchEvent()
和
onInterceptTouchEvent()
都可以实现这一目标。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并禁用每个子项的触摸事件。