GridView自适应高度

    xiaoxiao2021-03-25  64

           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  
    转载请注明原文地址: https://ju.6miu.com/read-33068.html

    最新回复(0)