2

そんなレイアウトをしています。

<RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        ....>
        <LinearLayout
        android:id="@+id/box1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
           ...............
           ..............
        </LinearLayout>
        <LinearLayout
        android:id="@+id/box2"
        android:background="#c0000000"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
           .............
           .............
        </LinearLayout>
</RelativeLayout>

Box2 は Box1 の上に表示されており、Box2 の色が半透明であるため、Box1 が部分的に表示されています。ButtonBox2 のs とEditTexts が機能しないように、box2 ですべてのタッチ イベントを消費させたいと思います。Javaコードでどのように行うことができますか?

4

2 に答える 2

8

次のようなレイアウトでタッチリスナーを設定します。

your_liner_layout.setOnTouchListener(new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event){                  
       return true;
    }
});

これにより、イベントが消費され、イベントの伝播が防止されます

于 2013-03-05T11:50:48.270 に答える
4

私の理解では、box2 (およびその子ビュー) はクリック可能ではなく、box1 はクリック可能であるべきです。box2 relativeLayout に属性 clickable="false" を追加し、 box1 に clickable='''true'' を追加します。

それ以外の場合は、問題に関する追加の詳細を提供してください。

于 2013-03-05T11:14:09.253 に答える