Как показать тень высот между фрагментами в окне просмотра? - PullRequest
0 голосов
/ 07 октября 2019

У меня есть ViewPager2, где страницы являются фрагментами. Пользователь может провести страницу с правой стороны экрана поверх текущей страницы (то есть стационарно). У меня проблема в том, что хотя правая страница имеет угол возвышения выше, чем текущая страница во время анимации вьюджера, я не могу получить тень для отображения. Уменьшение текущей страницы и уменьшение альфа-канала (как показано на скриншоте ниже) имеет неплохой эффект, но это не совсем то, что я ищу.

enter image description here

Вот мой 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)

Кто-нибудь знает, что мне не хватает или я делаю неправильно? Спасибо.

1 Ответ

2 голосов
/ 07 октября 2019

Похоже, что это ошибка текущей версии (бета04) компонента ViewPager2. Тень правильно отображается в старом ViewPager.

Создана проблема с Google, надеюсь, они смогут ее изучить.

...