GridView自适应高度

       GridView跟ListView都是比较常用的多控件布局,而GridView更是实现九宫图的首选。GridView 是 DataGrid的后继控件,在.net framework 2 中,虽然还存在DataGrid,但是GridView已经走上了历史的前台,取代DataGrid的趋势已是势不可挡。GridView和DataGrid功能相似,都是在web页面中显示数据源中的数据,将数据源中的一行数据,也就是一条记录,显示为在web页面上输出表格中的一行。
        GridView数据条数和控件的高度是动态生成,在不同的屏幕分辨率之下,高度如果不能自适应会出现控件显示不全或者控件下留有空白的情况。
        GridView的用法很多,网上介绍最多的方法就是自己实现一个Adapter继承BaseAdapter,再供GridView使用。我们可以在 Adapter获取 GridView的高度,然后根据行数计算出每行的高度,将高度设置到加载的每一个ITEM中,从而达到自适应空间高度的目的。

        核心代码:

public View getView(int position, View convertView, ViewGroup parent) { 
        if(convertView == null) { 
            convertView = LayoutInflater.from(mContext).inflate(R.layout.home_gridview_item_smore, null); 
        } 
        int ROW_NUMBER = 2;//2行
        AbsListView.LayoutParams param = new AbsListView.LayoutParams(
                android.view.ViewGroup.LayoutParams.FILL_PARENT,
                mGv.getHeight()/ROW_NUMBER);
        convertView.setLayoutParams(param);//重新设置宽度和高度
        
        ImageView image = (ImageView) convertView.findViewById(R.id.ItemImage); 
        TextView text = (TextView) convertView.findViewById(R.id.ItemText); 
        Item item = (Item) getItem(position); 
        image.setImageResource(item.ItemImage); 
        text.setText(item.itemtext); 
        
        return convertView; 
    }  





图片


有时候会出现
mGv.getHeight()为NULL的情况,要在GridView控件所在的LinearLayout中添加高度属性或者android:layout_weight="1"  
参考: http://blog.chengyunfeng.com/?p=465
http://stackoverflow.com/questions/5690144/how-can-i-force-a-gridview-to-use-the-whole-screen-regardless-of-display-size  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金双石的小墨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值