我正在使用框架布局和线性布局叠加,当点击叠加时,也会调用按钮点击监听器,请告诉我如何处理这个问题。
<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>
上面有框架布局,基本上是父布局。在这个布局后面我有两个按钮,问题是它们可以从这个线性布局叠加中点击
答案 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;
}