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);  
        }  
     
    }
  • 相关阅读:
    Create C++ Windows Forms Application in Visual Studio 2017
    VS项目打包发布
    获取光标所在行索引
    拖拽生成控件副本
    MDI中的ToolStrip合并
    使用FFmpeg音视频格式转换
    获取项目中其他文件
    解决Winform大多数DPI问题
    《Pro Git》第3章 分支
    《Pro Git》第2章 Git基础
  • 原文地址:https://www.cnblogs.com/ArRan/p/4775626.html
Copyright © 2011-2022 走看看