在活动周围灰色边框的点击功能?

时间:2011-06-03 22:17:52

标签: android android-layout

enter image description here

在附带的屏幕截图中,活动周围的灰色区域是半透明的,并且活动显示为以下xml。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:background="@color/candidate_normal" android:scrollX="-100dp" 
    android:scrollY="-100dp" android:onClick="backgrndListner">
    <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" 
        android:background="@drawable/overlay1" android:clickable="false">
        <LinearLayout android:layout_width="1100dp" android:layout_height="wrap_content" android:orientation="horizontal">
            <ImageButton android:id="@+id/homeButton" android:src="@drawable/home" android:layout_width="wrap_content" 
                android:layout_height="wrap_content" android:clickable="true"/>
            <LinearLayout android:layout_width="1100dp" android:layout_height="wrap_content" android:orientation="horizontal">
                <TextView android:textSize="18dp" android:text="Header" android:editable="true" android:layout_height="wrap_content" 
                    android:layout_width="wrap_content" android:id="@+id/headerInfo" android:layout_marginLeft="25dp"
                    android:layout_marginTop="2dp"/>
                <TextView android:id="@+id/yellowCardItem" android:textSize="30dp" android:textStyle="bold" 
                    android:text="Yellow Card Item"  android:layout_marginTop="25dp" android:layout_marginLeft="300dp" 
                    android:layout_height="wrap_content" android:layout_width="wrap_content" android:gravity="center_horizontal"/>
            </LinearLayout>
            <ImageButton android:id="@+id/statusComplete" android:src="@drawable/notification_done_red" android:layout_width="wrap_content" 
                android:layout_height="wrap_content" android:layout_gravity="right|top"/>
        </LinearLayout>
        <LinearLayout android:layout_width="1100dp" android:layout_height="wrap_content" android:orientation="vertical">
            <TextView android:id="@+id/yellowCardDescription" android:textSize="20dp" android:padding="30dp" 
                android:layout_marginLeft="50dp" android:layout_marginRight="50dp"
                android:layout_width="wrap_content" android:layout_height="300dp" android:gravity="center_horizontal"
                 android:text="Description should come here" android:textColor="#FF0000"/>
        </LinearLayout>
        <LinearLayout android:id="@+id/mediaItems" android:layout_width="match_parent" android:layout_height="wrap_content" 
            android:orientation="horizontal" android:layout_marginLeft="200dp">
        </LinearLayout>
        <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"
            android:layout_marginTop="10dp">
            <ImageButton android:id="@+id/share" android:src="@drawable/share" android:layout_width="wrap_content" 
                android:layout_height="wrap_content" android:clickable="true" android:layout_gravity="right|top" android:layout_marginLeft="1185dp"/>
        </LinearLayout>
    </LinearLayout>

我面临的问题是每当我触摸白色区域(活动存在的地方)时,它会感应到 backgrndListner ,我只想要灰色区域(以红色突出显示) 。我只想激活白色活动区域外的区域以获得完整的屏幕。

任何帮助都会非常感激。

YOUT&GT;

1 个答案:

答案 0 :(得分:1)

我认为您需要阻止内部视图传播触摸事件。因此,您可以尝试将ID添加到第二个LinearLayout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:background="@color/candidate_normal" android:scrollX="-100dp" 
    android:scrollY="-100dp" android:onClick="backgrndListner">
    <LinearLayout android:id="@+id/ignorebox" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" 
        android:background="@drawable/overlay1" android:clickable="false">

然后在你的onCreate中试试这个:

findViewById(R.id.ignorebox).setOnTouchListener(new View.OnTouchListener(){
  public boolean onTouch(View v, MotionEvent event){ return true; }
});