• Android GridView使用View.GONE只隐藏内容而不隐藏空间的解决方案


    最近在处理GridView的时候遇到这样一个问题:Android手机客户端接收服务端返回的一串数据(数据条数不固定),这串数据不一定都要显示到GridView上,也就是说有一部分内容需要隐藏掉,即有一部分Item需要隐藏。

    最开始处理的时候使用的是View.GONE来隐藏整个Item,测试之后发现,内容是隐藏了,但是隐藏内容的这个item仍占用界面空间,这是不符合项目要求的,我们想要的效果是:如果有隐藏内容就隐藏掉,并且不占用界面空间,下一个item会自动向上填充!

    最后想到的办法是动态的将Item整个隐藏并将width和height设置为0。测试了一个这样做果然能够实现羡慕需求。

    设置代码如下:

    @Override
        public View getView(int position, View convertView, ViewGroup arg2) {
            if (convertView == null) {
                convertView = inflater.inflate(R.layout.test_layout, null);
            }
            /**
             * 状态为1、2时需要显示Item,其他情况不显示Item
             */
            int itemState = 0;
            switch(itemState){
                case 1:
                    convertView.setVisibility(View.VISIBLE);
                    break;
                case 2:
                    convertView.setVisibility(View.VISIBLE);
                    break;
                    default://下面这段代码就是让GridView中的指定的item不显示并且不占用界面空间的方法
                        convertView.setVisibility(View.GONE);
                        AbsListView.LayoutParams param = new AbsListView.LayoutParams(
                                //设置item的weidth和height都为0
                                0,
                                0);
                        //将设置好的布局属性应用到GridView的Item上
                        convertView.setLayoutParams(param);
                        break;
            }
            return convertView;
        }
  • 相关阅读:
    《算法笔记》8.1小节——搜索专题->深度优先搜索(DFS)
    [xdoj]1303jlz的刷题黑科技
    [xdoj]1299&1300朱神的烦恼 朱神的序列
    [洛谷]p1996约瑟夫环 &xdoj1311
    [xdoj] 1310 DSKer的卡牌游戏
    [xdoj] 1301&1302 数字计数 数字计数的复仇
    随手快递app开发第十六天
    随手快递app开发第十五天
    随手快递app开发第十四天
    随手快递app开发第十三天
  • 原文地址:https://www.cnblogs.com/tony-yang-flutter/p/3513405.html
Copyright © 2020-2023  润新知