GridView Item 大小可能不一样,如何保持同一行的Item 高度大小相同,且G


2023年12月19日发(作者:牧马人跑高速吓人)

图所示,左右大小不一致,中间还留了一块,给人的感觉太差了!!那如何保证GridView自适应且看起来更美观呢? 达到这样的效果呢?? private GridView gv;public AtypeAdapter(GridView gv, Context context,

List list) { = gv;t = context; = list;} 昨天用到GridView,但是遇到几个问题,就是GridView默认的item其实大小是一致的,但是我们经常会遇到item大小不同,系统默认会留白的问题,很头疼!如下图这样的: GridView对象传到对应的adapter里面, 网上很多人人也说了,得到GridVeiw的总的height,然后除以总共的Rows就可以设置所有的行的item高度一致了。但是对于GridView来说,adapter数据都没绑定,怎么可能得到高度呢? 还有一点是,咱们的GridView的每个item的高度是不确定的,就算你算出了GridView的总高度,然后跟 就会造成,右度娘搜索了,google了,还是没到好的方法!!但是在一篇blog里得到了 一个思路,就是把GridView对象传进到adapter 里面,然后去动态设置item的height。这样做就行:贴出部分关键代码:GridView Item 大小可能不一样,如何保持同一行的Item 高度大小相同,且GridView高度自适应!

item的rows做除法,得到的每行的高度,得到的效果也不是想要的,因为有的item会很大,会比平局高度还大,那会显示不全,有的item会比较小,比平均高度还小很多,会导致留白很大!效果很差!! 我的adapter的每一个item 里面包含了三个textview,textview的内容文字的长度是不固定的,所以按照平均值来写死每个item的高度,是不理想的,也是不行的。那怎么办? 这么写:传入的GridView之后,.findViewById(_serial_num);_name = (TextView) ewById(_name);_kusercode = (TextView)

ewById(_code);(holder);// 绑定listener,检测convertview的height ();} else {holder = (Holder) ();}_serial_t((position + 1) + "");_t((position).getAfullname());_t((position).getAusercode());// 绑定_(position);// 绑定当前的item,也就是_(convertView);return convertView;}public class Holder {public View getView(int position, View convertView, ViewGroup parent)

{Holder holder;if (convertView == null) {holder = new Holder();convertView = e((Activity)

t,_adpter, null);_serial_num = (TextView)

convertView

public TextView atype_serial_num;public TextView atype_name;public TextView atype_kusercode;public void update() {// 精确计算GridView的item高度atype_wTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {public void

onGlobalLayout() {int position =

(Integer) atype_();// 这里是保证同一行的item高度是相同的!!也就是同一行是齐整的 height相等if (position >

0 && position % 2 == 1) { View v =

(View) atype_();int

height = ght();View

view = ldAt(position - 1);int

lastheight = ght();// 得到同一行的最后一个item和前一个item想比较,把谁的height大,就把两者中

// height小的item的高度设定为height较大的item的高度一致,也就是保证同一

// 行高度相等即可if

(height > lastheight) {outParams(new Params(} else

if (height < lastheight) {outParams(new Params(}GhGl

}}});}} 这样设定以后,adpter的同一行的item的height会相同,保证了GridView同一行的height自适应相同,美观且舒服!!


本文发布于:2024-09-24 10:18:08,感谢您对本站的认可!

本文链接:https://www.17tex.com/fanyi/15252.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:高度   得到   效果   绑定   留白   对象
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议