Как обрабатывать проблемы нового нижнего листа библиотеки поддержки/дизайна?
Фон
Я использовал модифицированную версию нижний лист ( здесь, на основе эта библиотека, также написал об этом здесь), чтобы иметь приятный переход между свернутым (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 >
Я собираюсь добавить ссылку к примеру проекта, где вы можете найти то, что ищете.
И вот как это выглядит:
[
]
Ответ 2
Вы можете использовать эту библиотеку. Насколько я понял, в этой библиотеке нет проблем.