Снэк-бар сверху. Это возможно?

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


person Fábio Carballo    schedule 27.07.2015    source источник


Ответы (4)


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

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

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

person Blackbelt    schedule 27.07.2015

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

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

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

person OWADVL    schedule 25.10.2015
comment
К сожалению, ваша библиотека страдает от огромной ошибки, из-за которой TSnackBar появляется только один раз, если вы меняете активность/фрагмент, поэтому, к сожалению, ее нельзя использовать в производстве. - person Henrique de Sousa; 02.02.2016
comment
@HenriquedeSousa огромный... ну, скажем, 100 метров в высоту? или огромный, как 150 кг? .... не успел починить, но пиарить не за что. - person OWADVL; 02.02.2016
comment
Я пытаюсь исправить это, но я не могу найти причину, если вы знаете, где это, просто объясните, и я постараюсь посмотреть на это в свободное время, спасибо! - person Henrique de Sousa; 02.02.2016
comment
открытый исходный код не требует большего... мы все делаем это в свободное время. но если вам нужна эта библиотека, и вы нашли решение, было бы здорово поделиться ею с остальными. - person OWADVL; 02.02.2016
comment
Нет, я просто добавил простой вид поверх другого пустого макета. Нет анимации, нет единой поддержки. Мой клиент не будет платить мне за дальнейшее расследование :‹ - person Henrique de Sousa; 03.02.2016
comment
у меня есть проблема с использованием предоставленной библиотеки каждый раз, когда я переключаюсь между фрагментами, и я отклоняю ее, сначала отклоняется тело закусочной, а через долю секунды тень закусочной вызывает плохое взаимодействие с пользователем. - person tsiro; 10.04.2016
comment
Я знаю. Мне нужно время, чтобы исправить эту уродливую ошибку. Если кому-то удастся сделать это раньше меня, пожалуйста, сделайте push req. - person OWADVL; 10.04.2016
comment
@OWADVL Какая у него ошибка? Я не сталкивался с какими-либо проблемами при использовании этой библиотеки. Но мой вариант использования был очень маленьким. Я хотел бы знать, о какой проблеме говорят другие люди, и, возможно, исправить ее, если смогу. Итак, не могли бы вы рассказать мне, в чем проблема и как воспроизвести эту проблему? - person Ashish Pathak; 21.06.2016
comment
он возвращает исключение, которое не может найти класс 'android.graphics.drawable.VectorDrawable', на который ссылается метод com.androidadvance.topsnackbar.TSnackbar.getBitmap - person Basant; 03.03.2018
comment
@HenriquedeSousa Я решил это, используя одноэлементный класс и каждый раз создавая новую закусочную. Теперь у меня работает нормально. Могу поделиться кодом, если кому интересно. - person b-fg; 30.04.2018
comment
Да, вы должны создать свой собственный ответ и получить отзывы о карме :) - person Henrique de Sousa; 11.05.2018

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

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

On activity_main.xml:

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

On MainActivity.kt:

val snackbar = Snackbar.make(
    findViewById(R.id.top_coordinator),
    "Hello World",
    Snackbar.LENGTH_INDEFINITE
)

snackbar.show()
person Codigo Morsa    schedule 13.06.2019

person    schedule
comment
Я пытался заставить это работать более 48 часов подряд. Я знаю, что это не рекомендуется делать, но как человек, измотанный попытками всего, что я нашел раньше, спасибо, большое спасибо. Ваше решение было единственным, которое сработало для меня. - person Shadow; 05.07.2017
comment
Он может перемещать вид вверх, но анимация по-прежнему идет снизу вверх, верно? - person Usman Rana; 29.06.2018
comment
вылетает на андроид 6 - person Emad; 09.08.2018