簡體   English   中英

如何在viewpager中顯示片段之間的高程陰影?

[英]How to show elevation shadow between fragments in a viewpager?

我有一個 ViewPager2 頁面是片段。 用戶可以從屏幕右側在當前頁面(即靜止的)上方滑動頁面。 我遇到的問題是,雖然在查看器 animation 期間右側頁面的高度高於當前頁面,但我似乎無法顯示陰影。 縮小當前頁面並降低 alpha(如下面的屏幕截圖所示)具有不錯的效果,但這並不是我想要的。

在此處輸入圖像描述

這是我設置海拔高度的頁面轉換器(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)

有誰知道我可能會錯過什么或做錯了什么? 謝謝你。

這似乎是 ViewPager2 組件的當前版本 (beta04) 的錯誤。 陰影在較舊的 ViewPager 中正確顯示。

與谷歌創建了一個問題,希望他們能調查一下。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM