Плавающая кнопка действия исчезает под SECOND Snackbar

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

Я использую это в RecyclerView, в котором я могу удалять элементы. Когда элемент удаляется, появляется панель «Отменить». Поэтому, когда вы удаляете некоторые элементы один за другим, видимая закусочная заменяется новой (что вызывает поведение FAB)

Знаете ли вы решение, чтобы сохранить FAB выше новых закусочных?

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:fab="http://schemas.android.com/tools"
    android:id="@+id/coordinator_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:backgroundTint="@color/background_grey"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <include
            android:id="@+id/toolbar"
            layout="@layout/toolbar" />

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scrollbars="vertical" />

    </LinearLayout>

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|end"
            android:layout_marginBottom="16dp"
            android:layout_marginEnd="16dp"
            android:layout_marginRight="16dp"
            android:elevation="6dp"
            android:src="@drawable/ic_add_white_36dp"
            app:borderWidth="0dp"
            app:fabSize="normal"
            app:pressedTranslationZ="10dp"
            app:rippleColor="@color/abc_primary_text_material_dark" />

</android.support.design.widget.CoordinatorLayout>

Вот как это выглядит после удаления элемента

введите здесь описание изображения

... и затем после того, как я удалю другой элемент

введите здесь описание изображения


person Nglhrdtptrck    schedule 12.10.2015    source источник
comment
Вы захотите добавить Snackbar в CoordinatorLayout. stackoverflow.com/a/32777587/2444099   -  person Eugen Pechanec    schedule 12.10.2015
comment
comment
Извините, но это не сработало. Та же проблема   -  person Nglhrdtptrck    schedule 14.10.2015


Ответы (1)


Это всегда будет происходить, так как закусочная находится над видом. В этом сценарии не следует использовать закусочную с накоплением. См. рекомендации Google.. https://www.google.co.in/design/spec/components/snackbars-toasts.html#snackbars-toasts-usage

Напротив, ваша реализация должна быть чем-то вроде https://github.com/jenzz/Android-UndoBar

Приносим извинения за изменение вашего дизайна

person Ashish Rawat    schedule 12.10.2015
comment
Спасибо. Мои закусочные не сложены. Когда один отображается, и я удаляю другой элемент из RecyclerView, новый Snackbar заменяет старый. Это НЕ похоже на снимок экрана 4 Руководства по дизайну Google. Но разве Snackbar (с действием) не является именно тем, что необходимо в этом сценарии? Так же, как смахивание Google Now Cards - person Nglhrdtptrck; 12.10.2015
comment
Я прикрепил несколько скринов к открытию поста - person Nglhrdtptrck; 12.10.2015
comment
На самом деле ответственность за координацию макета заключается в том, чтобы обрабатывать это каждый раз, когда появляется закусочная, однако в этом случае есть некоторая ошибка. Важно отметить одну вещь: у CoordinatorLayout нет врожденного понимания работы FloatingActionButton или AppBarLayout. - он просто предоставляет дополнительный API в виде Coordinator.Behavior, который позволяет дочерним представлениям лучше контролировать сенсорные события и жесты, а также объявлять зависимости друг от друга и получать обратные вызовы через onDependentViewChanged(). Вам нужно поиграть с этими двумя методами. - person Ashish Rawat; 12.10.2015