Android(安卓)ScrollView嵌套ListView或者GridView显示不全
16lz
2021-01-25
ScrollView嵌套ListView或者GridView显示不全是因为滑动冲突,计算ListView或者GridView的高度就行了
/** * 根据数据设置ListView,GridView的高度,从而确定其在ScrollView的显示高度 * * */ public class ListViewUtility { public static void setListViewHeightBasedOnChildren(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(); int height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount())); params.height = height; listView.setLayoutParams(params); } public void setGridViewHeight(GridView gridview, int num) { ListAdapter Adapter = gridview.getAdapter(); if (Adapter == null) { return; } int size = Adapter.getCount(); int row = size / num; if (size % num != 0) { row += 1; } gridview.measure(0, 0); View gridItem = Adapter.getView(0, null, gridview); gridItem.measure(0, 0); int height = gridItem.getMeasuredHeight(); ViewGroup.LayoutParams params = gridview.getLayoutParams(); params.height = row * height; gridview.setLayoutParams(params); } public int getGridViewHeight(GridView gridview, int num) { ListAdapter Adapter = gridview.getAdapter(); if (Adapter == null) { return 0; } int size = Adapter.getCount(); int row = size / num; if (size % num != 0) { row += 1; } gridview.measure(0, 0); View gridItem = Adapter.getView(0, null, gridview); gridItem.measure(0, 0); int height = gridItem.getMeasuredHeight(); return row * height; }}
更多相关文章
- ImageView宽度填满屏幕,高度自适应
- Suggestion: add 'tools:replace="android:label"' to element a
- ScrollView中的组件设置android:layout_height=fill_parent不起
- Android:获取屏幕的宽度和高度
- 整理:控件之间的冲突
- achartengine与Android中ScrollView的冲突问题
- View Touch 事件分发
- Android学习笔记之相对布局与表格布局
- android 第三方app截图