大家在开发中使用ViewPager做轮播之类的控件时,是不是会遇到当想设置它的高度时,怎么写都不生效,这其实是ViewPager的设计思想导致的,起初ViewPager就是为了做全屏的滑动切换,所以在它的源码中onMeasure中第一步就设置了自己的宽高
源码中已经设定了默认使用父View的宽高,我们真实的需求其实大多都是希望ViewPager根据自己的子View高度来自适应自己的高度
而我们遇到这个问题时,一般来说都是不知道问度娘…
当我们去百度一下,发现查到的解决方案都是这样的
但其实这都是治标不治本的,不能根据你的实际需求来随意更改它的高度,总的来说我们只需要自定义自己的ViewPager重写它的onMeasure,在onMeasure中控制ViewPager的高度与它的子View高度保持一致就可以了,
接下来就使用我们的方案,这里我们使用的是kotlin写的
class MyViewPager(context: Context) :ViewPager(context) {
constructor(context: Context , attributeSet: AttributeSet)