У меня есть ViewPager2, где страницы являются фрагментами. Пользователь может провести страницу с правой стороны экрана поверх текущей страницы (то есть стационарно). У меня проблема в том, что хотя правая страница имеет угол возвышения выше, чем текущая страница во время анимации вьюджера, я не могу получить тень для отображения. Уменьшение текущей страницы и уменьшение альфа-канала (как показано на скриншоте ниже) имеет неплохой эффект, но это не совсем то, что я ищу.
Вот мой Page Transformer, где я устанавливаю высоту (translationZ):
class DepthPageTransformer : ViewPager2.PageTransformer {
override fun transformPage(view: View, position: Float) {
view.apply {
val pageWidth = width
when {
position < -1 -> { // [-Infinity,-1)
// This page is way off-screen to the left.
alpha = 0f
}
position <= 0 -> { // [-1,0]
// Fade the page out
alpha = 1f + position
// Counteract the default slide transition
translationX = pageWidth * -position
translationZ = 0f
val scaleFactor = (MIN_SCALE + (1 - MIN_SCALE) * (1 - abs(position)))
scaleX = scaleFactor
scaleY = scaleFactor
}
position <= 1 -> { // (0,1]
// Use the default slide transition when moving to the right page
alpha = 1f
translationZ = 20f
scaleX = 1f
scaleY = 1f
}
else -> { // (1,+Infinity]
// This page is way off-screen to the right.
alpha = 0f
}
}
}
}
}
Я установил цвет фона (который, я считаю, необходим для теней высот) в onCreateView
метод фрагментов:
val view = inflater.inflate(R.layout.fragment_item_list, container, false)
view.setBackgroundColor(Color.WHITE)
Кто-нибудь знает, что мне не хватает или я делаю неправильно? Спасибо.