ViewPager的高度設置wrap_content無法生效

嘗試的幾個方法

1、通過ConstraintLayout進行佈局

app:layout_constraintTop_toBottomOf="@id/tab_layout"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"

結果:沒有起效果

2、通過固定高度的方式來進行佈局

結果:viewpager裏面我要放的東西高度不一定,所以pass

3、重寫ViewPager的onMeasure

class MyViewPager :ViewPager{
    constructor(context: Context):super(context)

    constructor(context: Context,attrs: AttributeSet):super(context, attrs)

    override fun onMeasure(widthMeasureSpec: Int,heightMeasureSpec: Int) {
        var height = 0
        for (i in 0 until childCount){
            val child = getChildAt(i)
            child.measure(widthMeasureSpec,
                MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED))
            val h = child.measuredHeight
            if (h > height){
                height = h
            }
        }

        super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(height,
            MeasureSpec.EXACTLY))
    }
}

最後用的是這個方法,但是這個方法有個壞處,在tablayout跟viewpager連用時,因爲viewpager每個的高度不一樣,所以會以高度最高的子佈局爲viewpager的高度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章