Android 关于在ScrollView中加上一个ListView,ListView内容显示不完全(总是显示第一项)的问题的两种简单的解决方案
2013-09-28 20:05
661 查看
是这样的哈:
有这样一个需求:
1.显示一个界面,界面上有一个列表(ListView),列表上面有一个可以滚动的海报。
2.要求在ListView滚动的过程中,ListView上面的海报也可以跟着ListView滚动。
我们的一般解决方案:
1.使用ScrollView嵌套这一个ListView。
对,这样的布局本身是没哟什么问题的。但是问题来了,当你运行你的界面的时候,突然发现,你的列表中明明有好多项,但是为什么只显示一项呢?仔细检查你会发现,不是列表只显示一项,而是其它的项被布局本身遮住了。
怎么办呢?下面将给出两种相对简单的解决方案:
第一种:禁用ListView的滚动(Scroll)。
第二种:计算ListView中每一项的高度,然后根据每一项的高度“乘以”项数,计算出ListView的总高度。
下面给出第一种方法的代码展示:
以下是第二种方法的的代码:
到此为止问题结束。如果哪位朋友有更好的解决办法,别忘了提出来分享一下哈。
有这样一个需求:
1.显示一个界面,界面上有一个列表(ListView),列表上面有一个可以滚动的海报。
2.要求在ListView滚动的过程中,ListView上面的海报也可以跟着ListView滚动。
我们的一般解决方案:
1.使用ScrollView嵌套这一个ListView。
对,这样的布局本身是没哟什么问题的。但是问题来了,当你运行你的界面的时候,突然发现,你的列表中明明有好多项,但是为什么只显示一项呢?仔细检查你会发现,不是列表只显示一项,而是其它的项被布局本身遮住了。
怎么办呢?下面将给出两种相对简单的解决方案:
第一种:禁用ListView的滚动(Scroll)。
第二种:计算ListView中每一项的高度,然后根据每一项的高度“乘以”项数,计算出ListView的总高度。
下面给出第一种方法的代码展示:
import android.widget.ListView; public class MyListView extends ListView{ public MyListView(android.content.Context context,android.util.AttributeSet attrs){ super(context, attrs); } /** * 设置不滚动 */ public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } }
以下是第二种方法的的代码:
/**动态改变listView的高度*/ public 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(); // totalHeight += 80; } ViewGroup.LayoutParams params = listView.getLayoutParams(); // params.height = 80 * (listAdapter.getCount() - 1); // params.height = 80 * (listAdapter.getCount()); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); ((MarginLayoutParams) params).setMargins(0, 0, 0, 0); listView.setLayoutParams(params); }
到此为止问题结束。如果哪位朋友有更好的解决办法,别忘了提出来分享一下哈。
相关文章推荐
- Android 关于在ScrollView中加上一个ListView,ListView内容显示不完全(总是显示第一项)的问题的两种简单的解决方案
- android scrollview listview 嵌套, 显示时总是显示listview内容,没有显示到activity顶部问题
- android 一个ListView显示两种样式,比较简单,比如聊天的界面最常用
- android 关于 ScrollView嵌套GridView,ListView 显示和滑动的问题
- android 关于 ScrollView嵌套GridView,ListView 显示和滑动的问题
- Android-关于一个界面同级中需要两个listView时,一个ListView被嵌套在ScrollView中,ListView的适配器adapter中的getView执行次数重复问题
- 关于 Android 中ScrollView中带有ListView 或者是Gridview的子视图的问题解决方案
- android 关于 ScrollView嵌套GridView,ListView 显示和滑动的问题
- Android学习 之 问题&解答 ScrollView中嵌套ListView时显示不全的简便解决方案
- Android学习 之 问题&解答 ScrollView中嵌套ListView时显示不全的简便解决方案
- android 关于 ScrollView嵌套GridView,ListView 显示和滑动的问题
- android 关于 ScrollView嵌套GridView,ListView 显示和滑动的问题
- 关于ScrollView中使用listview后listview不完全显示问题
- android 关于listview scrollview 底部 控件无法显示的两个解决方案
- android 关于 ScrollView嵌套GridView,ListView 显示和滑动的问题
- 【Android】【UI】ScrollView嵌套ListView,GridView显示不完全的解决方案
- android 布局文件 ScrollView 中的 listView item 显示不全解决方案
- 今天在使用iscroll4 做一个简单触屏滚动demo,发现上下拖动的时候总是会回弹,不能看到下面的内容.这个问题苦恼了很久,终于解决
- Android中 ScrollView(ListView)中嵌套ListView时显示不全的简便解决方案
- 关于ListView在ScrollView中只能显示一行数据的问题