Android中在ScrollView中显示ListView
2013-02-28 16:22
190 查看
在以前一个项目中碰到这么一个需求,要将一个ListView嵌套在一个外部ScrollView当中,试了后发现,ListView的高度出了问题,始终只显示一点,并且滑动也有问题,Android默认是禁止将ListView潜逃在ScrollView里面的,虽然这种设计不被推崇,但是后来到Stackoverflow上找到了一个解决方法,那就是在为ListView设置Adapter后,重新计算子item的高度,然后通过LayoutParams重新给ListView设置高度,这样就能正常显示了。当然以上问题在iOS开发中是不存在的,iOS允许在View中再添加View,所以iOS中可以在一个UIScrollView中再添加一个UITableView。回到正题,看看如何解决Android开发中的这个问题,很简单,在为ListView设置完adapter后,调用下面这个静态方法就可以了:
public class Utility {
public static void setListViewHeightBasedOnChildren(ListView listView) {
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);
}
}
对Android&IOS感兴趣的朋友可以加入我们的讨论QQ群,在这里,我们只讨论干货:
iOS群:220223507
Android群:282552849
觉得文章对你有用,点击右下角的转发按钮分享给更多人!
同时欢迎关注我的新浪微博和我交流:@唐韧_Ryan
public class Utility {
public static void setListViewHeightBasedOnChildren(ListView listView) {
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);
}
}
对Android&IOS感兴趣的朋友可以加入我们的讨论QQ群,在这里,我们只讨论干货:
iOS群:220223507
Android群:282552849
觉得文章对你有用,点击右下角的转发按钮分享给更多人!
同时欢迎关注我的新浪微博和我交流:@唐韧_Ryan
相关文章推荐
- listView及ScrollView等PadingTop显示问题:android:clipToPadding="false"
- android 关于 ScrollView嵌套GridView,ListView 显示和滑动的问题
- Android ScrollView里面嵌套ListView 显示异常(只有显示一个Item)
- 【Android界面实现】解决ScrollView中嵌套Listview,Listview中嵌套Listview显示不完整和滑动冲突的问题
- android ScrollView中嵌套ListView显示问题
- Android ScrollView中嵌套ListView和GridView显示不全解决方案
- Android好奇宝宝_02_ListView在ScrollView中显示
- Android ScrollView里嵌套Listview,造成Listview的Item显示1行问题的最正确的解决方法
- Android开发笔记——ScrollView中解决listview,gridview显示不全问题
- Android中解决scrollview中嵌套listview的listview只显示一行的问题
- Android ScrollView嵌套ListView,ListView只显示一行或不显示的解决办法
- 【Android基础学习】动态设置 listView的高度,解决scrollView中嵌套listview时显示不全的问题
- android 关于 ScrollView嵌套GridView,ListView 显示和滑动的问题
- 【Android---项目中】ScrollView中镶嵌ListView,ListView只显示一行的解决方案
- Android 关于在ScrollView中加上一个ListView,ListView内容显示不完全(总是显示第一项)的问题的两种简单的解决方案
- Android-ScrollView中listview控件高度正确显示
- android 关于 ScrollView嵌套GridView,ListView 显示和滑动的问题
- Android学习 之 问题&解答 ScrollView中嵌套ListView时显示不全的简便解决方案
- Android ScrollView中嵌套ListView时显示不全的简便解决方案
- Android 关于在ScrollView中加上一个ListView,ListView内容显示不完全(总是显示第一项)的问题的两种简单的解决方案