Плавающая кнопка действия прыгает вверх и вниз, когда начинается анимация закусочной - PullRequest
2 голосов
/ 01 мая 2020

Я хотел добавить функцию ОТМЕНА после удаления элемента в приложении Notes. Я добавил снэк-бар в метод android ItemTouchHelper onSwiped, в котором удаляю отдельные заметки. Проблема, с которой я сталкиваюсь, заключается в том, что анимация слайдов Snackbar заставляет плавающую кнопку действия подпрыгивать вверх и вниз при запуске анимации. Мне кажется, эта проблема описана на форуме Github Github и Анимация , к сожалению, проблема не решена.

Моя активность_основная

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:id="@+id/coordinatorLayout">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycle_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:listitem="@layout/note_item" />

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/button_add_note"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:elevation="4dp"
        android:layout_margin="32dp"
        android:src="@drawable/ic_add" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

onSwiped

public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
                CoordinatorLayout coordinatorLayout = findViewById(R.id.coordinatorLayout);
                Note deletedNote = adapter.getNoteAt(viewHolder.getAdapterPosition());
                noteViewModel.delete(deletedNote);
                Snackbar snackbar = Snackbar.make(coordinatorLayout, "Note deleted", Snackbar.LENGTH_LONG)
                .setAction("UNDO", new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                noteViewModel.insert(deletedNote);
                            }
                        });
                snackbar.show();
            }
        }).attachToRecyclerView(recyclerView);

1 Ответ

1 голос
/ 01 мая 2020

Кажется, это ошибка в Material-Components , вы можете обойти ее, используя более старую версию библиотеки (1.1.0-alpha10), или отказаться от скользящей анимации и использовать Вместо этого, затемните анимацию следующим образом

<style name="MySnackbarStyle" parent="Widget.Design.Snackbar">
  <item name="animationMode">fade</item>
</style>

и добавьте следующее в тему вашей деятельности

<item name="snackbarStyle">@style/MySnackbarStyle</item>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...