如果有叠加,如何禁用按钮的单击监听器

时间:2014-10-29 14:42:51

标签: android layout

我正在使用框架布局和线性布局叠加,当点击叠加时,也会调用按钮点击监听器,请告诉我如何处理这个问题。

   <LinearLayout
    android:id="@+id/logLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:background="@color/transparentBlack"
    android:orientation="vertical" >


   <com.valspals.classes.ButtonStyleM700
            android:id="@+id/logDone"
            android:layout_width="325dp"
            android:layout_height="35dp"
           android:layout_gravity="center"

            android:layout_marginTop="25sp"

            android:background="@drawable/btn_confirm_normal"
            android:text="@string/iamdone"
            android:textColor="@color/White"
            android:textSize="@dimen/normalTextSize" />


    <com.valspals.classes.ButtonStyleM700
            android:id="@+id/woops"
            android:layout_width="325dp"
            android:layout_height="35dp"
           android:layout_gravity="center"

            android:layout_marginTop="15sp"
            android:layout_marginBottom="25dp"
            android:background="@drawable/btn_confirm_normal"
            android:text="@string/woops"
            android:textColor="@color/White"
            android:textSize="@dimen/normalTextSize" />



</LinearLayout>

上面有框架布局,基本上是父布局。在这个布局后面我有两个按钮,问题是它们可以从这个线性布局叠加中点击

1 个答案:

答案 0 :(得分:1)

您可以使用多种选项。最简单的方法是设置一个全局变量,并在调用onClick时进行检查。

即。你有一个boolean overlayShowing = false;

在您的事件监听器中,只需检查!overlayShowing

然而,这仍然会允许显示按钮的点击动画。如果你想要阻止它,你可以拦截顶部布局(你的FrameLayout)上的触摸事件,并防止它们被传递到下面的布局,如果叠加是可见的。

e.g。在你重写的FrameLayout中:

@Override
public boolean onInterceptTouchEvent(MotionEvent e){
    return overlayShowing;
}

这将拦截触摸事件,并防止它在显示叠加层时将其传递到链上。

如果仅通过切换视图的可见性来显示叠加层,则可以通过在onInterceptTouchEvent()方法中检查FrameLayout的可见性来进一步简化叠加。 e.g。

@Override
public boolean onInterceptTouchEvent(MotionEvent e){
    return getVisibility() == View.VISIBLE;
}