• 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);  
        }  
     
    }
  • 相关阅读:
    JAVA-初步认识-第十一章-异常-原理异常对象的抛出throw
    shopex后台上传模板漏洞
    PHP使用1个crontab管理多个crontab任务
    HTML5跨浏览器表单及HTML5表单的渐进增强
    用Opera Mobile调试手机版网页【转】
    mootools里选择器$,$$,$E,$ES等的区别
    Call to undefined function bcscale()
    阿里云服务器数据库配置
    阿里云Mysql重置密码
    window.open窗口关闭后刷新父窗口代码
  • 原文地址:https://www.cnblogs.com/ArRan/p/4775626.html
Copyright © 2020-2023  润新知