#android #kotlin #android-fragments #floating-action-button #android-snackbar
Вопрос:
У меня возникла странная проблема Snackbar
перекрытия a floating action button
, которая у меня есть в главном представлении приложения. Для контекста я приведу краткое описание проблемы, с которой я сталкиваюсь. Я инициирую snackbar
из отдельного фрагмента после завершения действия (обновление или добавление), затем возвращаюсь к основному представлению (фрагмент списка), в котором snackbar
будет отображаться, но кнопка snackbar
«плавающее действие» перекрывает плавающую кнопку, а не слегка перемещает ее, даже если макет фрагмента списка содержит макет координатора. Есть какие-нибудь идеи, как обойти эту проблему?
Текущее Поведение:
https://i.imgur.com/Y5GSXZ2.gif
Желаемое Поведение:
https://i.imgur.com/hMfHSa6.gif
Ниже приведен код, который я вызываю при переходе обратно к основному фрагменту (фрагменту списка).
createSnackBar(requireView(),R.string.successfully_updated, Snackbar.LENGTH_SHORT)
findNavController().navigate(R.id.action_updateFragment_to_listFragment)
Реализация функции createSnackBar.
fun createSnackBar(view: View, @StringRes message: Int, duration: Int) {
val resources = view.resources
val snackBar = Snackbar.make(view, resources.getString(message), duration)
snackBar.show()
}
Комментарии:
1. всякий раз, когда вы перемещаетесь, вместо того, чтобы показывать панель закусок во фрагменте обновления (перед навигацией), покажите ее во фрагменте списка, как только вернетесь
2. @ShobhithYadav Как я могу этого добиться?
Ответ №1:
Вам нужно установить кнопку fab на вид привязки SnackBar
с помощью setAnchorView
fun createSnackBar(view: View, @StringRes message: Int, duration: Int) {
val resources = view.resources
val snackBar = Snackbar.make(view, resources.getString(message), duration)
snackBar.setAnchorView(R.id.myFab) // replace myFab with your fab button id
snackBar.show()
}