Когда стоит использовать BottomSheetDialog

Ответ

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

  1. Контекстных действий – например, выбор опций для элемента списка.
  2. Форм/ввода данных – когда не нужен полноценный диалог.
  3. Дополнительной информации – без переключения на новый экран.

Пример:

val bottomSheet = MyBottomSheetFragment()
bottomSheet.show(supportFragmentManager, "TAG")

Нюансы:

  • Не используйте для критически важных действий (лучше AlertDialog).
  • Учитывайте высоту контента – слишком большой контент может плохо скроллиться.
  • Для сложной логики предпочтительнее BottomSheetDialogFragment (чем BottomSheetDialog).

Ответ 18+ 🔞

А, блядь, BottomSheetDialog! Ну это ж классика, ёпта. Представь себе такую штуку, которая выезжает снизу, как ящик в комоде, только с интерфейсом. Идеально, когда тебе надо пользователю что-то показать или спросить, но не настолько срочно, чтобы орать ему в лицо полноценным диалогом.

Типичные сценарии, где он рулит, пизда рулю:

  1. Контекстные менюшки. Ткнул юзер на какую-нибудь хуйню в списке — снизу выезжает панелька с кнопками «Удалить», «Переименовать», «Поделиться». Удобно, ёбана!
  2. Формы на пол-экрана. Нужно ввести адрес доставки или ещё какую фигню, но не хочется городить целый новый экран. Выкатил снизу — вписал — закрыл. Красота.
  3. Показать детали, не уходя. Например, в карточке товара «Быстрый просмотр». Чувак тыкнул, снизу вылезло описание побольше, он глянул и закрыл. Не покидая основную вьюху. Гениально и просто.

Вот, смотри, как это в коде выглядит, проще пареной репы:

val bottomSheet = MyBottomSheetFragment()
bottomSheet.show(supportFragmentManager, "TAG")

Но есть нюансы, блядь! Их надо чётко понимать, а то будет тебе хиросима, а не интерфейс.

  • Для критически важного выбора — не годится. Если от решения пользователя зависит судьба вселенной, или он сейчас безвозвратно удалит все фотографии с отпуска — используй AlertDialog. Потому что этот bottom sheet можно просто свайпнуть вниз, проигнорировав. А AlertDialog так просто не отмахнёшься, придётся отвечать. Тут доверия ебать ноль к внимательности юзера.
  • С высотой контента не ебись. Если ты туда запихнёшь овердохуища текста или список из 500 элементов — он, конечно, растянется, но скроллиться будет как говно по асфальту. Пользователь взвоет. Думай, что внутрь пихаешь.
  • Для сложной логики — выбирай BottomSheetDialogFragment. Он мощнее, им проще управлять, к нему проще прикрутить свою логику поведения. Обычный BottomSheetDialog — это как спиннер на детской площадке, а Fragment — уже как аттракцион в «Европарке». Чувствуешь разницу?

Короче, инструмент охуенный, но как любой инструмент — требует мозгов. Не тычь его везде, где попадя, а то получится пиздопроебибна, а не интерфейс.