Кнопки материалов крадут щелчки в представлении, которое объявляется после них в иерархии макетов. - PullRequest
0 голосов
/ 15 апреля 2019

Я хочу скрыть некоторую часть контента под сеткой (как в макете ящика). Кнопки MaterialComponents, находящиеся под этим видом сетки, получают щелчки в представлении сетки, и это является серьезной проблемой.

просмотр содержимого:

<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, кнопка не получит щелчков, несмотря на то, что она, вероятно, имеет более высокий угол возвышения, чем вид холста. Но это не решает мою проблему, а на самом деле делает ее еще хуже, потому что представление scrim теперь охватывает все на экране, даже содержимое, которое намного позже в иерархии макетов.

Я знаю, что могу просто отключить кнопки, когда сетка контента видна, но это не совсем правильно, и кнопки, имеющие право на кражу кликов только из-за какого-то нелепого возвышения, на самом деле злит меня достаточно, чтобы обратиться за помощью.

1 Ответ

0 голосов
/ 15 апреля 2019

попробуйте это:

<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" />
...