解决 ScrollView 和 ListView 的嵌套使用只显示一个条目的工具类

public static void setListViewHeightBasedOnChildren(ListView listView) {

 if(listView == null) return;

 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));

 listView.setLayoutParams(params);

}

Adapter中 getView () 方法返回的 View 的必须由 LinearLayout 组成。
需要手动把 ScrollView 滚动至最顶端,因为使用这个方法的话,默认在ScrollView顶端的项是ListView。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容