Android如何消耗te LinearLayout的所有touchevent

时间:2013-03-05 11:08:40

标签: android touch android-linearlayout relativelayout

我有这样的布局。

<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部分可见。现在我想通过box2消耗所有触摸事件,以便Box2中的ButtonEditText不起作用。如何通过java代码完成?

2 个答案:

答案 0 :(得分:8)

您应该在布局上设置触控侦听器,如:

your_liner_layout.setOnTouchListener(new OnTouchListener() {

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

这将消耗事件并阻止事件的传播

答案 1 :(得分:4)

我的理解是box2(和它的子视图)不应该是可点击的,而box1应该是。所以在box2中添加属性clickable =“false”,在box1中添加clickable ='''true''。

否则提供有关您的概率的其他详细信息。