gpt4 book ai didi

android - 如果有覆盖,如何禁用按钮的点击监听器

转载 作者:行者123 更新时间:2023-11-30 02:35:29 25 4
gpt4 key购买 nike

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

   <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>

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

最佳答案

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

即你有一个 boolean overlayShowing = false;

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

但是,这仍将允许显示按钮的点击动画。如果您也想阻止这种情况,您可以拦截顶部布局(您的 FrameLayout)上的触摸事件,并在叠加层可见时阻止它们传递到下面的布局。

例如在您覆盖的 FrameLayout 中:

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

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

如果您的叠加层仅通过切换 View 的可见性来显示,您可以通过在 onInterceptTouchEvent() 方法中检查 FrameLayout 的可见性来进一步简化它。例如

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

关于android - 如果有覆盖,如何禁用按钮的点击监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26633317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com