Bitmap bigbitmap = Bitmap.createBitmap(listview.getMeasuredWidth(), allitemsheight, Bitmap.Config.ARGB_8888); Canvas bigcanvas = new Canvas(bigbitmap);
private void measurePopUpDimension() { int widthSpec = MeasureSpec.makeMeasureSpec(getMeasuredWidth(), MeasureSpec.EXACTLY); int heightSpec = MeasureSpec.makeMeasureSpec(getPopUpHeight(), MeasureSpec.AT_MOST); listView.measure(widthSpec, heightSpec); popupWindow.setWidth(listView.getMeasuredWidth()); popupWindow.setHeight(listView.getMeasuredHeight() - dropDownListPaddingBottom); }
public static void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); int totalHeight = 0; int listWidth = listView.getMeasuredWidth(); for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); listItem.measure( MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); totalHeight += listItem.getMeasuredHeight(); } // ...update list height }
/** * ListView转换成bitmap * * @param listView * @return List<Bitmap> */ public static List<BitmapWithHeight> getWholeListViewItemsToBitmap(final ListView listView) { List<BitmapWithHeight> list = new ArrayList<>(); if (listView == null || listView.getAdapter() == null) { return list; } ListAdapter adapter = listView.getAdapter(); int count = adapter.getCount(); for (int i = 0; i < count; i++) { View childView = adapter.getView(i, null, listView); list.add(getSimpleViewToBitmap(childView, listView.getMeasuredWidth())); } return list; }
Bitmap bigbitmap = Bitmap.createBitmap(listview.getMeasuredWidth(), allitemsheight, Bitmap.Config.ARGB_8888); Canvas bigcanvas = new Canvas(bigbitmap);
Bitmap bigbitmap = Bitmap.createBitmap(listview.getMeasuredWidth(), allitemsheight, Bitmap.Config.ARGB_8888); Canvas bigcanvas = new Canvas(bigbitmap);
public static void setListViewHeightBasedOnChildren(final ListView listView) { listView.post(new Runnable() { @Override public void run() { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return; } int totalHeight = listView.getPaddingTop() + listView.getPaddingBottom(); int listWidth = listView.getMeasuredWidth(); for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); listItem.measure( View.MeasureSpec.makeMeasureSpec(listWidth, View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); totalHeight += listItem.getMeasuredHeight(); Log.d("listItemHeight" + listItem.getMeasuredHeight(), "___________"); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = (int) ((totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)))); listView.setLayoutParams(params); listView.requestLayout(); } }); }
public static void setListViewHeightBasedOnChildren(final ListView listView) { listView.post(new Runnable() { @Override public void run() { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return; } int totalHeight = listView.getPaddingTop() + listView.getPaddingBottom(); int listWidth = listView.getMeasuredWidth(); for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); listItem.measure( View.MeasureSpec.makeMeasureSpec(listWidth, View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); totalHeight += listItem.getMeasuredHeight(); Log.d("listItemHeight " + listItem.getMeasuredHeight(), "********"); } Log.d("totalHeight " + totalHeight, "********"); ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = (int) ((totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)))); listView.setLayoutParams(params); listView.requestLayout(); } }); }