zoukankan      html  css  js  c++  java
  • Android ListView根据项数的大小自动改变高度

    第一种:按照listview的项数确定高度

        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); 

    第二种:直接使用当前界面尺寸,稍加调整

    ViewGroup.LayoutParams params = listView.getLayoutParams();
    params.height = getWindowManager().getDefaultDisplay().getHeight() – 30;
    // Toast.makeText(this, params.height+"", 3000).show();
    listView.setLayoutParams(params);

    XML布局写法,请注意这里需要一个内部LinerLayout

    <ScrollView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:fadingEdge = "none"
            android:background="#FFF4F4F4"
            xmlns:android="http://schemas.android.com/apk/res/android"
            >
       <LinearLayout
        android:gravity="center_horizontal"
        android:orientation="vertical"
        android:background="#fff4f4f4"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
        <ListView
            android:id="@+id/moreItemsListView"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:cacheColorHint="#FFF4F4F4"
            android:dividerHeight="0.0dip"
            android:fadingEdge="none"
            />
       </LinearLayout>
    </ScrollView>

    第三种

    public static void setListViewHeightBasedOnChildren(ListView listView, int attHeight) {  
            ListAdapter listAdapter = listView.getAdapter();   
            if (listAdapter == null) {  
                // pre-condition  
                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)) + attHeight;  
            listView.setLayoutParams(params);  
        }  
     
    }
  • 相关阅读:
    shell script 学习笔记-----标准输出
    《TCP/IP详解 卷一》读书笔记-----TCP persist &Keeplive timer
    《TCP/IP详解 卷一》读书笔记-----TCP超时重传
    《TCP/IP详解 卷一》读书笔记-----TCP数据流
    《TCP/IP详解 卷一》读书笔记-----TCP连接建立
    《TCP/IP详解 卷一》读书笔记-----DNS
    《TCP/IP详解 卷一》读书笔记-----广播&多播&IGMP
    《TCP/IP详解 卷一》读书笔记-----UDP&IP 分片
    《TCP/IP详解 卷一》读书笔记-----动态路由协议
    《TCP/IP 详解 卷一》读书笔记-----IP静态 路由
  • 原文地址:https://www.cnblogs.com/ArRan/p/4775626.html
Copyright © 2011-2022 走看看