GridView如何让其子项充满

我们在使用GridView的时候经常会遇到这样一种情况,GridView的子项ItemView不能充满整个GridView导致界面比较难看
无法充满的案例
今天,帮大家解决一下这个问题。
这个是奋斗的目标
成功案例

知识点一 LayoutInflater

LayoutInflater作用是将layout的xml布局文件实例化为View类对象。
传送门:LayoutInflate的inflate函数用法详解

LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.main, null);

LayoutInflater inflater = LayoutInflater.from(context); (该方法实质就是第一种方法,可参考源代码)
View layout = inflater.inflate(R.layout.main, null);

LayoutInflater inflater = getLayoutInflater();(在Activity中可以使用,实际上是View子类下window的一个函数)
View layout = inflater.inflate(R.layout.main, null);

知识点二 重写Adapter的getView()方法;

 public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder;//非核心代码,Holder的推荐使用
            LayoutInflater mInflater = LayoutInflater.from(NamingResult.this);//关键代码,获取View对象
            if (convertView == null) {
                convertView =  mInflater.inflate(
                        R.layout.item_select, parent,false);//关键代码 ,初始化convertView。
                holder = new ViewHolder();
                holder.tvItem = (TextView) convertView.findViewById(R.id.tv_item);
                holder.ivItem = (ImageView) convertView.findViewById(R.id.iv_item);

                ViewGroup.LayoutParams layoutParams = convertView.getLayoutParams();//关键代码。获取View -- Layout布局的其属性

                layoutParams.height = lin.getHeight() / 2;//获取其高度
                convertView.setLayoutParams(layoutParams);//重新设置其高度
                convertView.setTag(holder);
            } else {
               holder= (ViewHolder) convertView.getTag();
            }
            if(convertView.getHeight()==0){
            //第一次调用getView时,parent的高度还是0,所以这里需要判断一下,并且重新设置,否则第一个子项显示不出来
                ViewGroup.LayoutParams layoutParams = convertView.getLayoutParams();

                layoutParams.height = lin.getHeight() / 2;
                convertView.setLayoutParams(layoutParams);
            }

            holder.tvItem.setText(list.get(position).toString());
            holder.ivItem.setImageResource(mPicsCallName[position]);
            return convertView;
        }

如果没有这段代码

 if(convertView.getHeight()==0){
            //第一次调用getView时,parent的高度还是0,所以这里需要判断一下,并且重新设置,否则第一个子项显示不出来
                ViewGroup.LayoutParams layoutParams = convertView.getLayoutParams();

                layoutParams.height = lin.getHeight() / 2;
                convertView.setLayoutParams(layoutParams);
            }

就会是这个样子
失败案例

知识点三 xml布局文件

<GridView
            android:id="@+id/gv_setting_call"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:numColumns="2"
            android:stretchMode="columnWidth"
            />
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值