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

すべての子をトラバースし、それぞれのタッチ イベントを無効にします。

于 2012-11-27T06:18:05.447 に答える