11

私は多くのもの( 、、、...FrameLayoutを含む)を含むコンテナを持っています。ScrollViewWebViewViewPager

このコンテナでonClickイベントをトリガーできるようにしたいのですが、onClickイベントがトリガーされるのScrollViewは、コンテナ内の彼ら...WebViewViewPager

コンテナ内の任意の場所でonClickをトリガーできるようにするために、コンテナの子ですべてのタッチイベントを無効にするにはどうすればよいですか?

アップデート

アイデアは、Android 3.2のタスクマネージャーのようなもの、つまり、アプリの現在表示されている画面が縮小されたアイコンとして表示され、クリックできるようにすることです。

ありがとう

4

2 に答える 2

19

私は何かを誤解しているかもしれませんが、あなたの質問への答えは非常に簡単だと思います.タッチイベントを子供にディスパッチしたくない場合は、次のようにViewGroup.onInterceptTouchEvent (MotionEvent ev) APIリファレンスをオーバーライドするだけです:

public boolean onInterceptTouchEvent (MotionEvent ev){
    return true;
}

Androidのドキュメントによると、これはViewGroupが常にすべてのタッチイベントを傍受し、それらを子にディスパッチしないことを意味します。それらはすべて、ViewGroup.onTouchEvent(MotionEvent ev)ViewGroup のメソッドに向けられます。

于 2012-10-19T15:54:12.207 に答える
0

次のように無効にできます。

FrameLayout parent = (FrameLayout)findViewById(some_id);
disableChildsOnTouch(parent)


public void disableChildsOnTouch(ViewGroup viewGroup){
    int cnt = viewGroup.getChildCount();
    for (int i = 0; i < cnt; i++){
        View v = viewGroup.getChildAt(i);
        if (v instanceof ViewGroup){
            disableChildsOnTouch((ViewGroup)v);
        } else {
            v.setOnTouchListener(null);
            v.setOnClickListener(null);
            //v.SETYOURLISTENER(null)
        }
    }
}
于 2012-04-23T13:13:40.277 に答える