Gridview控件整体的高度设置

博客讨论了GridView控件在设置高度时遇到的问题,当设置为`wrap_content`或`match_parent`时无法正确显示所有item。作者深入分析了GridView的onMeasure()方法,解释了高度计算的模式(UNSPECIFIED、EXACTLY、AT_MOST)。解决方案是通过自定义GridView并重写onMeasure方法,将高度MeasureSpec的模式强制改为AT_MOST,从而实现高度自适应。
摘要由CSDN通过智能技术生成

最近做需求需要用到gridview。发现这算得上是官方控件里比较不人性的一个了。为什么这么说呢,它的高度和它内部item的高度设置都不尽如人意。

Gridview控件整体的高度

我们知道gridview里边设置item,还可以设置列数。然后item个数超过列数就会折行,这样就显示成类似表格的样式。
写布局的时候没多想,直接把高度设置成了“wrap_content”。然后写adapter,传数据。运行。可是运行出来发现之显示了一行,第二行以后的item被无情的盖住了。
这里写图片描述
那么改成“match_parent”,依然不行。除非设成固定高度。
这怎么能忍。可是设置成固定高度又不现实,数据是动态的。
于是首先想到的方法自然是获取item个数,然后计算行数,用行数乘以每行的高度,然后通过layoutParam传给gridview。这自然是一种方案。但是太low了。不喜欢。
我们还是进一步看看GridView的原理,为什么会得出这样一个效果。
直接找到计算高度的onMeasure()方法,由于方法很长,我们直接截取计算高度的部分

@Override
    protected void onMeasure(int
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值