关于ListView在ScrollView中只能显示一行数据的问题
2016-10-27 15:19
399 查看
问题原因:发现在ScrollView中嵌套ListView空间,无法正确的计算ListView的大小,故可以通过代码,根据当前的ListView的列表项计算列表的尺寸。
方案解决一:计算高度
方案解决二:重写Listview
方案解决一:计算高度
/** * 为了解决ListView在ScrollView中只能显示一行数据的问题 * * @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); listItem.measure(0, 0); // 计算子项View 的宽高 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
import android.content.Context; import android.util.AttributeSet; import android.widget.ListView; /** * Created by zxf on 2016/10/17. */ public class AllListView extends ListView { public AllListView(Context context, AttributeSet attrs) { super(context, attrs); } public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int mExpandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, mExpandSpec); } }
相关文章推荐
- 关于ScrollView里面包含listView只能显示listView的第一行问题解决方案
- 关于ScrollView嵌套Listview,GridView只显示一条数据的问题
- 关于ScrollView嵌套ListView或GridView只显示一行的问题
- 关于listview,gridview里面数据显示不全的问题
- 解决ScrollView中嵌套ListView和GridView只显示一行的问题
- scrollview嵌套listview 数据显示不全 问题处理方式集合
- android 关于 ScrollView嵌套GridView,ListView 显示和滑动的问题
- android 关于 ScrollView嵌套GridView,ListView 显示和滑动的问题
- android 关于 ScrollView嵌套GridView,ListView 显示和滑动的问题
- 解决ScrollView 中的listView只显示一行的问题:
- 关于ScrollView中使用listview后listview不完全显示问题
- Android中解决scrollview中嵌套listview的listview只显示一行的问题
- Android 关于在ScrollView中加上一个ListView,ListView内容显示不完全(总是显示第一项)的问题的两种简单的解决方案
- 解决GridView,ListView嵌套在ScrollView时只显示一行高度的问题
- 关于ListView删除item后 界面数据显示不对问题
- 安卓开发——问题:ScrollView中嵌套ListView时,listview只显示一行
- 关于ListView显示数据,堆积问题的解决方案!!!
- Android 关于在ScrollView中加上一个ListView,ListView内容显示不完全(总是显示第一项)的问题的两种简单的解决方案
- ScrollView中嵌套ListView只显示一行问题
- ScrollView 里面 嵌套ListView 导致listview无法完全显示数据的问题