SnackBar сверху. Это возможно?

Я хотел представить анимацию SnackBar сверху, вместо обычного поведения, отображающего SnackBar снизу. Это легко взломать?

Ответы

Ответ 1

Нет, это невозможно. В документации говорится, что

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

Вы можете использовать третью библиотеку, например, Crouton

Ответ 2

можно. проверьте эту библиотеку, сделанную мной https://github.com/AndreiD/TSnackBar

в основном вы добавляете 2 новые анимации для перемещения сверху и изменяете гравитацию макета. Это все:)

Позднее Редактировать: там происходит ошибка.... если кто-то хочет потратить некоторое время на его исправление, мы все это оценим:)

Ответ 3

 CoordinatorLayout   coordinatorLayout = (CoordinatorLayout) findViewById(R.id.coordinatorLayout);
  Snackbar snackbar = Snackbar.make(coordinatorLayout, "Text", Snackbar.LENGTH_LONG);
   View view = snackbar.getView();
   CoordinatorLayout.LayoutParams params =(CoordinatorLayout.LayoutParams)view.getLayoutParams();
                params.gravity = Gravity.TOP;
                view.setLayoutParams(params);
      snackbar.show();

Ответ 4

РЕДАКТИРОВАТЬ: Это решение визуализирует Snackbar сверху, но анимация снизу.

Это возможно, по крайней мере, с библиотекой Android Material и небольшим фокусом. Вы можете привязать "снэк-бар" к представлению, которое отображается на верхней позиции, например так: "Activity_main.xml":

<FrameLayout>

    <!-- rest of the components here -->
    
    <androidx.coordinatorlayout.widget.CoordinatorLayout
        android:id="@+id/top_coordinator"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"/>
</FrameLayout>