1

Я разработал некоторые пользовательские поведения для TextView, который меняет положение и размер в зависимости от высоты AppBarLayout внутри CoordinatorLayout. Это означает, что заголовок становится большим и находится в центре полностью развернутого Toolbar, когда он открыт, но в нормальном положении заголовка, когда ToolBar полностью разрушен.Предотвращение CollapsingToolbar продолжается под строкой состояния в Lollipop

Посмотрите на видео, чтобы увидеть его на устройстве Lollipop (не работает правильно) и устройстве JellyBean (работает нормально).

Проблема возникает (я считаю, основываясь на моих тестах) только на устройствах Lollipop, и, похоже, она связана с тем фактом, что строка состояния является наложением на устройстве Lollipop, но не на JellyBean. Это отражено в моем коде, а также, где для расчета окончательных y позиции мне нужно сделать следующее для последней позиции, чтобы быть правильными:

if (mFinalYPosition == 0) { 
    mFinalYPosition = (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 
     ? (((mContext.getResources().getDimensionPixelOffset(R.dimen.abc_action_bar_default_height_material)/2)) + getStatusBarHeight()) 
     : ((mContext.getResources().getDimensionPixelOffset(R.dimen.abc_action_bar_default_height_material)/2)); 
    } 

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

Как бы я мог добиться этого?

ответ

1

Мне удалось решить эту проблему, удалив все элементы android:fitsSystemWindows из моего layoutxml. Кроме того, из видео, которое я опубликовал, может быть ясно, что некоторые виды исчезли во время анимации на моем устройстве Lollipop, а затем появились позже. Я смог исправить это, установив elevation на определенные View s, чтобы гарантировать, что они не исчезли за другими во время анимации.

Смежные вопросы