解决ViewPager设置高度无效问题,从源码角度分析并解决问题

当试图为ViewPager设置高度时,常会遇到设置无效的情况。这是因为ViewPager默认全屏设计。本文从源码角度分析,提出通过自定义ViewPager并重写onMeasure方法,使其高度根据子View自动调整的解决方案。同时强调在PagerAdapter的instantiateItem函数中,使用特定方式加载布局以确保能获取子View的LayoutParams。
摘要由CSDN通过智能技术生成

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

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

    constructor(context: Context , attributeSet: AttributeSet) 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值