【安卓开发】 GridView动态宽度

安卓开发 GridView动态宽度

学了半年安卓开发,在成长路上看了许多大佬的文章,甚是羡慕,希望有一天也能成为一个能够分享技术的大佬。发博客的想法沉淀了许久,在最近参加的技能竞赛中有时间学到了大量的新技术,于是发了我人生中的第一条技术博客,期待和广大网友一同变强。初来乍到,文章中就不足和错误之处,欢迎各位大神多多指点。

在实际项目开发中,我们通常要实现横向滚动的列表,RecyclerView虽然可以实现,但很多朋友会觉得太复杂,而GridView不能实现横向滚动,这时聪明的小伙伴立即就想到了GridViwe外嵌套一层HorizontalScrollView,然而在HorizontalScrollView中组件并不能匹配父容器,所以我们就必须为GridView设置宽度。而在通常的项目中数据的长短不一,要实现适应不同长度的数据的列表,这里GridView就必须设置动态高度。

我们通常用这样实现简单的动态宽度

1. GridView
2. ViewGroup.LayoutParams

一、GridView(网格布局)
相信许多像我一样的新人经常使用listView,可以实现纵向列表布局,十分便利。然而在实际的项目开发中,我们还经常要实现横向列表的功能,这时很多大佬就会想到RecyclerView。但对于许多新手来说,或者要做的一些简单的横向布局,我们就会先考虑到GridViwe(网格布局)
GridView不能独立显示,通常要搭配 SimpleAdapter 进行使用。这里分享一篇关于 GridView 的好文章
Android GridView详解

二、ViewGroup.LayoutParams(父容器View参数)
LayoutParamsViewGroup 的一个内部类,这是一个基类,主要描述了宽高。这里分享一篇关于 LayoutParams 的详细文章
LayoutParams 说起到代码动态布局

上代码🤩

  • 了解了ViewGroup.LayoutParamsGridView后我们来看看代码吧,注释十分详细。
    /** 动态设置GridView宽度(极简版) */
    private void setGridWidth(GridView gridView,ArrayList data_1){  //GridView组件对象 和 用于填充适配器的数据
        int nmb=data_1.size();  //得到数据长度
        int one_width=gridView.getRequestedColumnWidth();  //得到gridView的item宽度(需设置gridView的columnWidth属性)
        int spacing=gridView.getRequestedHorizontalSpacing();  //得到设置的item间距
        ViewGroup.LayoutParams layoutParams =gridView.getLayoutParams(); //得到gridView父布局的View参数
        layoutParams.width =(one_width+spacing+2)*nmb; //将view参数宽度设置为(item宽度+item间距)*数据长度
        gridView.setLayoutParams(layoutParams);  //将修改后的父布局的view参数设置到gridView
    }

注:这里 getRequestedColumnWidth() 方法得到的高度需要设置 gridViewcolumnWidth(列宽)属性,可以根据item的宽度进行自行设置。
最后,初次写文章,有不足之处,欢迎大家多多指出
💻💻💻

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值