Как обрабатывать проблемы нового нижнего листа библиотеки поддержки/дизайна?

Фон

Я использовал модифицированную версию нижний лист ( здесь, на основе эта библиотека, также написал об этом здесь), чтобы иметь приятный переход между свернутым (AKA "peeked" ) состоянием и расширенным состояние.

У библиотеки были свои проблемы, но в целом я исправил их все.

Проблема

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

Я решил, что пора попробовать новый нижний лист библиотеки поддержки (показано здесь), но я обнаружил, что у него много основных проблем:

  • нижний лист отображается сразу и на неправильной высоте.
  • он должен иметь свою высоту, настроенную сразу, без поддержки "wrap_content", а также не может иметь высоту "match_parent" при ее расширении, так как она будет поверх других представлений, включая панель инструментов.
  • Когда он скрыт, он по-прежнему реагирует на события касания и снова отображается.
  • он сработает, когда я установлю его начальное состояние.

И все это, даже не пытаясь обрабатывать то, что я хотел, это 3-фазные, которые я делал раньше.

Что я пробовал

Сначала мне показалось, что я просто не использую библиотеку хорошо, поэтому я попробовал 2 образца, которые я нашел:

Я также попробовал некоторый код, который я нашел здесь, в StackOverflow, но кажется, что все образцы примерно одинаковы.

Я заметил, что все они имеют одинаковые проблемы, поэтому я сообщил о них:

Теперь я пытаюсь различными способами исследовать и исправлять проблемы, но я все еще не могу этого сделать.

Вопрос

Есть ли способ справиться с этими проблемами? Каким должен быть правильный код для использования нижних листов с помощью библиотеки поддержки?

Ответ 1

UPDATE Ссылка на полный ответ, где вы можете найти все объяснения о том, как получить полное поведение, такое как Google Maps.


Помогая вам с тем, что вы хотите

что я хотел, это 3 фазы, которые я делал раньше

Использование библиотеки поддержки 23.x + вы можете сделать это, изменив значение по умолчанию BottomSheetBehavior, добавив еще один stat со следующими шагами:

  • Создайте класс Java и продолжите его с CoordinatorLayout.Behavior<V>
  • Скопируйте код копии из файла BottomSheetBehavior по умолчанию в новый.
  • Измените метод clampViewPositionVertical:

  • Добавить новое состояние

    public static final int STATE_ANCHOR_POINT = X;

  • Измените следующие методы: onLayoutChild, onStopNestedScroll, BottomSheetBehavior<V> from(V view) и setState (необязательно)

Итак, теперь у вас есть эти состояния:
STATE_HIDDEN
STATE_COLLAPSED
STATE_DRAGGING
STATE_ANCHOR_POINT
STATE_EXPANDED.

Вы можете использовать setBottomSheetCallback, как в оригинальном BottomSheetBehavior

XML (без каких-либо данных о параллаксе, таких как карты Google) выглядит следующим образом:

<CoordinatorLayout>

    <FrameLayout/>

    <AppBarLayout>
        <CollapsingToolbarLayout>
            <Toolbar/>
        </CollapsingToolbarLayout >
    </AppBarLayout >

    <NestedScrollView>
        <LinearLayout/>
    </NestedScrollView>

</CoordinatorLayout >



Я собираюсь добавить ссылку к примеру проекта, где вы можете найти то, что ищете.

И вот как это выглядит:
[CustomBottomSheetBehavior]

Ответ 2

Вы можете использовать эту библиотеку. Насколько я понял, в этой библиотеке нет проблем.