티스토리 뷰

Android/ViewPager

[ ViewPager #2 ] WrapContent ViewPager

녹색꼬맹이 2019. 12. 17. 22:32
반응형
SMALL

ViewPager 의 Wrap Content 를 적용하기 위함.

 

페이지마다 높이값이 다를 경우 ( 그 전 페이지 보다 지금 페이지가 높이가 더 높을 경우 ) 

 

높이가 바뀜. 

 

약간의 Custom 이 필요.

 

class WrapViewPager(context: Context) : ViewPager(context) {

    override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {

        var heightMeasureSpec = heightMeasureSpec
        val mode = MeasureSpec.getMode(heightMeasureSpec)

        if (mode == MeasureSpec.UNSPECIFIED || mode == MeasureSpec.AT_MOST) {
            super.onMeasure(widthMeasureSpec, heightMeasureSpec)

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

            heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
        }

        super.onMeasure(widthMeasureSpec, heightMeasureSpec)
    }
}

 

반응형
LIST
댓글