材质按钮从布局层次结构中声明的视图中窃取单击



我想将部分内容隐藏在稀松布下(如在抽屉布局中(。此稀松布视图下的"材质组件"按钮正在接收对稀松布视图的点击,这是一个主要问题。

内容稀松布视图:

<FrameLayout
    android:id="@+id/scrim"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:visibility="gone"
    android:background="@color/transparent"
    android:clickable="true"
    android:focusable="true"
    android:focusableInTouchMode="true"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

窃取点击的按钮:

<com.google.android.material.button.MaterialButton
    android:id="@+id/add_at_start"
    android:theme="@style/ButtonArrowShapedLeft"
    style="@style/ButtonStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="32dp"
    android:text="Add"
    android:visibility="gone"
    tools:visibility="visible"
    app:icon="@drawable/ic_add_black_24dp"
    app:layout_constraintStart_toStartOf="@+id/container"
    app:layout_constraintTop_toBottomOf="@+id/container" />

我已经确定问题出在按钮被提升。如果我将稀松布的海拔设置为2dp,该按钮不会收到任何点击,尽管它可能比稀松布视图具有更多的仰角 dp。但这并不能解决我的问题,它实际上使情况变得更糟,因为 scrim 视图现在涵盖了屏幕上的所有内容,甚至是布局层次结构中稍后的内容。

我知道我可以在内容稀松布可见时禁用按钮,但这似乎不对,仅仅因为一些荒谬的提升而感觉有权窃取点击的按钮实际上让我很生气寻求帮助。

试试这个:

<com.google.android.material.button.MaterialButton
android:id="@+id/add_at_start"
android:theme="@style/ButtonArrowShapedLeft"
style="@style/ButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:text="Add"
android:visibility="gone"
android:clickable="true"
tools:visibility="visible"
app:icon="@drawable/ic_add_black_24dp"
app:layout_constraintStart_toStartOf="@+id/container"
app:layout_constraintTop_toBottomOf="@+id/container" />

最新更新