Android BottomSheetDialogFragment слушатель изменения состояния - PullRequest
0 голосов
/ 19 марта 2019

Я использую BottomSheetDialogFragment и мне нужно знать, когда состояние изменилось.

Например, есть состояния BottomSheetBehavior

PEEK_HEIGHT_AUTO - Peek at the 16:9 ratio keyline of its parent.    
STATE_COLLAPSED - The bottom sheet is collapsed.
STATE_DRAGGING - The bottom sheet is dragging.
STATE_EXPANDED - The bottom sheet is expanded.
STATE_HIDDEN - The bottom sheet is hidden.
STATE_SETTLING - The bottom sheet is settling.

Я хотел бы изменить некоторые виды в зависимости от текущего состояния - например, когда BottomSheetDialogFragment будет развернут в полноэкранном режиме, я хочу показать крестик в правом верхнем углу для его закрытия и т. Д.

Как я могу слушать такого рода события?

Заранее спасибо.

1 Ответ

0 голосов
/ 15 мая 2019

поздно, но, вероятно, ответ на Ваш вопрос. Вы должны использовать обратный вызов bottomSheetBehavior.

bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
        @Override
        public void onStateChanged(View bottomSheet, int newState) {
  switch (newState) {
                case BottomSheetBehavior.STATE_COLLAPSED:
                    Log.d("Bottom Sheet Behavior", "STATE_COLLAPSED");
                    break;
                case BottomSheetBehavior.STATE_DRAGGING:
                    Log.d("Bottom Sheet Behavior", "STATE_DRAGGING");
                    break;
                case BottomSheetBehavior.STATE_EXPANDED:
                    Log.d("Bottom Sheet Behavior", "STATE_EXPANDED");

                    break;
                case BottomSheetBehavior.STATE_HIDDEN:
                    Log.d("Bottom Sheet Behavior", "STATE_HIDDEN");
                    bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
                    break;
                case BottomSheetBehavior.STATE_SETTLING:
                    Log.d("Bottom Sheet Behavior", "STATE_SETTLING");
                    break;
            }
        }
...