Mimic Snackbar + CoordinatorLayout + FAB с новым MotionLayout - PullRequest
5 голосов
/ 11 мая 2019

Допустим, у нас есть BottomNavigationBar с FAB сверху. При использовании этой настройки и отображении Snackbar, Snackbar должен появляться над BottomNavigationBar и нажимать вверх / вниз FAB при отображении / отклонении.

Это распространенный сценарий использования CoordinatorLayout. Возможно ли также создать эту анимацию, используя новый MotionLayout?

В трекере ошибок есть проблема, но она уже закрыта, потому что ОП не сформулировал вопрос четко (https://issuetracker.google.com/issues/112665540)

Проблемы, с которыми я столкнулся при попытке: У нас нет доступа к идентификатору макета Снэк-бара. У нас также нет доступа к общему xml панели Snackbar, поэтому мы не можем установить ее ограничения.

ОБНОВЛЕНИЕ: Я понимаю, что фрагмент кода поможет в качестве отправной точки для ответа на этот вопрос. Но то, что я когда-либо придумал, не было никакой пользы. Теперь я определил 2 основные проблемы:

  1. Я не знаю идентификационный номер Snackbar. Поэтому я не могу использовать его при написании описания сцены.

  2. Даже если бы я мог создать описание сцены (например, State1: SnackBar visible, State2: Snackbar not visible). Я должен был бы вызвать эти переходы сцены вручную. Это означает, что я воссоздаю свою собственную Snackbar вместо того, чтобы использовать оригинальную Snackbar, как это задумано.

КОММЕНТАРИИ: @mikejonesguy Да, на мой взгляд, они похожи. Не то же самое, но похоже. И у MotionLayout также есть задание, которое вы описали: координировать взаимодействия между его подвидами. Замените «координата» на «одушевленный», и вы увидите мою точку зрения. Также взгляните на обработчики OnSwipe / OnClick. MotionLayout все еще очень свеж, но я думаю, что он заменит CoordinatorLayout в будущем так же, как ConstraintLayout заменил RelativeLayout. Может быть, я ошибаюсь, а может и нет ... время покажет.

ВЫВОД: Что касается меня, то, похоже, нет способа (пока) добиться того, чего я хочу, только с помощью MotionLayout. Если это возможно, я обновлю этот вопрос рабочим примером. Извините за невозможную награду ...:)

1 Ответ

1 голос
/ 20 мая 2019

Вы можете создавать файлы макетов так, как если бы снэк-бар находился в иерархии макетов.Вам необходимо использовать виртуальные вспомогательные объекты Constraintlayout.Виртуальные объекты невидимы, но они действуют как обычный вид во время измерения и компоновки, поэтому их цель - помочь вам создать точное позиционирование, которое вы хотите.

Высота по умолчанию для снэк-баров составляет минимум 48dp и максимум 80dp.Вам понадобится эта информация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...