zoukankan      html  css  js  c++  java
  • GridView 和ListView中自适应高度

    android中GridView  和ListView放在scrollView中时会默认的只有一行高这时就要我们自己计算出它的高度啦

    首先是listview的

        //动态设置listview的高度
        public void setListViewHeightBasedOnChildren(ListView listView) {     
            // 获取ListView对应的Adapter     
            ListAdapter listAdapter = listView.getAdapter();  
            if (listAdapter == null) { 
                return; 
            } 
            int totalHeight = 0; 
            for (int i = 0; i < listAdapter.getCount(); i++) { 
                View listItem = listAdapter.getView(i, null, listView); 
                listItem.measure(0, 0); 
                totalHeight += listItem.getMeasuredHeight(); 
            } 
            ViewGroup.LayoutParams params = listView.getLayoutParams(); 
            params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount()-1)); 
            ((MarginLayoutParams)params).setMargins(10, 10, 10, 10);
            listView.setLayoutParams(params); 
        }

    下面是Gridview的  注意里面要设置你的列数

       public  void setListViewHeightBasedOnChildren(GridView listView) {  
            // 获取listview的adapter  
               ListAdapter listAdapter = listView.getAdapter();  
               if (listAdapter == null) {  
                   return;  
               }  
               // 固定列宽,有多少列  
               int col = 4;// listView.getNumColumns();  
               int totalHeight = 0;  
               // i每次加4,相当于listAdapter.getCount()小于等于4时 循环一次,计算一次item的高度,  
               // listAdapter.getCount()小于等于8时计算两次高度相加  
               for (int i = 0; i < listAdapter.getCount(); i += col) {  
                // 获取listview的每一个item  
                   View listItem = listAdapter.getView(i, null, listView);  
                   listItem.measure(0, 0);  
                   // 获取item的高度和  
                   totalHeight += listItem.getMeasuredHeight()+40;  //添加40顶边距等
               }  
          
               // 获取listview的布局参数  
               ViewGroup.LayoutParams params = listView.getLayoutParams();  
               // 设置高度  
               params.height = totalHeight;  
               // 设置margin  
               ((MarginLayoutParams) params).setMargins(10, 10, 10, 10);  
               // 设置参数  
               listView.setLayoutParams(params);  
           }
  • 相关阅读:
    C#中Invoke的用法(转)
    C#中Thread.IsBackground 属性
    127.0.0.1是什么地址?
    C# Socket服务器端如何判断客户端断开求解
    C#中线程间操作无效: 从不是创建控件 txtBOX 的线程访问它。
    C#多线程学习之如何操纵一个线程
    利用TCP协议,实现基于Socket的小聊天程序(初级版)
    进程与线程的一个简单解释
    javascript修改css样式表
    html根据下拉框选中的值修改背景颜色
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/5806286.html
Copyright © 2011-2022 走看看