Привет, снова добавьте переполнения. У меня есть еще один вопрос о фрагменте. (Я использую android.app.Fragment, а не фрагменты поддержки)
Я пытаюсь заменить фрагмент. Но это не так просто, как использование:
fragmentTransaction
.replace(containerId, newFragment)
.addToBackStack("unique tag")
.commit()
Почему бы и нет? Хорошие друзья, потому что у меня newFragment
есть анимация перехода.
Где определена анимация? Еще один большой вопрос, определяемый в фрагментах onCreateAnimator()
Почему это определено там? Долгий ответ на вопрос о том, почему можно найти: Неверные переходы вложенных фрагментов. На данный момент вам нужно верить, что так нужно делать в моем проекте.
Что делает анимация? Простой свиток с края экрана в центр его, полностью покрывающий исходный фрагмент. Имейте в виду, что в этом сценарии старый фрагмент просто сидит на своем месте. У него есть эффект анимации, чтобы не двигаться.
В чем проблема?
Проблема заключается в том, что newFragment имеет более низкое значение высоты (или z?), чем старое. Таким образом, переход не может наблюдаться, потому что старый фрагмент сидит над новым фрагментом. По достижении конца анимации вы увидите, что новый фрагмент мигает над старым. Я ожидал, что newFragment будет покрывать старый из начала анимации.
Почему бы не использовать add?. Кажется, это создает больше проблем, так как у меня много фрагментов, которые я хочу поменять и вывести из представления. Использование add, похоже, запускает их анимацию выхода в следующий раз, когда я использую замену, даже если перед ним есть 1... n фрагментов. Они также не останавливаются.
Почему бы не установить высоту? Поскольку я поддерживаю api 19, у которого нет свойства высоты.
Почему бы не использовать ViewCompat.setElevation() для api 19? Я попробовал и получил те же самые неудачные результаты.
Кто-нибудь нашел способ обойти эту проблему?