ListView手動設定高度類
阿新 • • 發佈:2018-11-01
import android.view.View; import android.view.ViewGroup; import android.widget.ListAdapter; import android.widget.ListView; /** * Created by 2018-10-29 on 10:49. * Dscription * Author by Administrator */ public class ListViewUtil { /** * 解決ScrollView巢狀ListView只顯示一條的問題 * @param listView */ public static void setListViewHeightBasedOnChildren(ListView listView) { // 獲取ListView對應的Adapter ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return; } int totalHeight = 0; for (int i = 0, len = listAdapter.getCount(); i < len; i++) { // listAdapter.getCount()返回資料項的數目 View listItem = listAdapter.getView(i,null, listView); // 計運算元項View 的寬高 listItem.measure(0, 0); // 統計所有子項的總高度 totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); // listView.getDividerHeight()獲取子項間分隔符佔用的高度 // params.height最後得到整個ListView完整顯示需要的高度 listView.setLayoutParams(params); listView.invalidate(); } public static void setListViewHeightBasedOnChildren(ListView listView,int Height) { // 獲取ListView對應的Adapter ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return; } int totalHeight = 0; for (int i = 0, len = listAdapter.getCount(); i < len; i++) { // listAdapter.getCount()返回資料項的數目 View listItem = listAdapter.getView(i,null, listView); // 計運算元項View 的寬高 listItem.measure(0, 0); // 統計所有子項的總高度 totalHeight += listItem.getMeasuredHeight()+10; } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1))+Height; // listView.getDividerHeight()獲取子項間分隔符佔用的高度 // params.height最後得到整個ListView完整顯示需要的高度 listView.setLayoutParams(params); listView.invalidate(); } }