ScrollView 里面 嵌套ListView 导致listview无法完全显示数据的问题
来源:互联网 发布:知乎 清华法学院体验 编辑:程序博客网 时间:2024/05/19 03:21
导言--- 本人Android小白一个,哈哈,总结下自己的辛苦历程,供自己回顾以及同各位大牛交流。如有错误,敬请留言交流。
一入编程深似海,回头白发已苍苍。 ----木木小黑
相信大家做Android的,一定会碰到这么一个问题,ScrollView 里面 嵌套ListView怎么整?之前我是直接放弃ScrollView 。后来的后来,项目需求必须这么玩。。(醉了)。在网上找了跟多例子,这里先介绍几个不能实现的例子吧。(起码我没成功。。。)
1. 直接在ScrollView的xml文件里加上 android:fillViewport="true" 这个属性。 个人表示,不得行。网上说设置父布局的高度为充满。亲测不行呐。
2. 新弄个类。名字随意。内容贴上:
public static void setListViewHeightBasedOnChildren(ListView listView) {
// 获取ListView对应的Adapter
ListAdapter listAdapter = listView.getAdapter();
ViewGroup.LayoutParams params = listView.getLayoutParams();
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(); // 统计所有子项的总高度
}
params.height = totalHeight
+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
// listView.getDividerHeight()获取子项间分隔符占用的高度
// params.height最后得到整个ListView完整显示需要的高度
listView.setLayoutParams(params);
}
然后,在主activity中。在listview.setAdapter后 加上 XXXX(类名).setListViewHeightBasedOnChildren(listView);
这样也不行。只能说成功了一半。如果只写个这,还是不行哒。就算1,2两种方法都用也是不行滴。
那么。重点来了。怎么玩呢?
<!----------------------------------------------------------------------------------------!>
<!----------------------------------------------------------------------------------------!>
<!----------------------------------------------------------------------------------------!>
<!----------------------------------------------------------------------------------------!>
笔者成功的方法步骤:
第一步,更改自己的item的布局为LinerLayout。注意,高度给确定的值。
第二步,重写一个ListView(大招来了)。这个是很重要的,原生的listview不得行。重写内容如下:
public class CustomListView(这个类名随意写) extends ListView{
public CustomListView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public CustomListView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public CustomListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
第三步,在你含有listview的xml文件里。不要ListVeiw。改成你自己的类。大概格式是: <com.tools.CustomListView/>
第四步,在主activity里,把你的ListView 都改成你自己重写的那个,记得导入包。。
总结,这个方法是目前我掌握的最终解决办法了。至于重新计算item高度的那种,我没有成功。。不过我觉得,每次进入都要重新计算的话,会比较慢吧。总的来说,最重要的就是新写一个ListView,用自己写的。就ok了。这种方法,也还是比较简单的。
(注:)这个方法是用于不点击的listview,因为我这里是只做显示了。以后如果碰到要显示的了,我再想吧。(说不定这个方法都通用呢?哈哈哈)欢迎大家交流。。
- ScrollView 里面 嵌套ListView 导致listview无法完全显示数据的问题
- scrollview嵌套listview导致无法正常显示
- ExpandableListView嵌套ListView导致ListView不能完全显示数据的问题
- 在ScrollView中嵌套ListView,ListView无法完全显示
- 解决ScrollView里面嵌套Listview的问题
- ScrollView嵌套ListView导致ListView显示异常
- Scrollview嵌套listView数据显示不正常问题
- ScrollView嵌套ListView的显示问题
- Android ScrollView 里面嵌套ListView只显示一项的解决方案
- 解决ScrollView嵌套ListView或ListView嵌套ListView,listview显示不全的问题
- 9.解决ScrollView与ListView共存时ListView高度无法完全显示的问题。
- Android ScrollView里嵌套listview,listview显示不全的问题
- android ScrollView嵌套ListView listview显示不全的问题
- Scrollview+ListView嵌套listview显示不全的问题
- ScrollView嵌套ListView导致item显示不全的原因
- 详解:scrollview嵌套listview,而listview的item中是webview,导致listview不能在scrollview完全伸展开的问题
- ScrollView中嵌套的ListView不能完全显示解决方法
- 自定义控件之解决ScrollView里面嵌套ListView显示不全的问题
- UIButton的ImageView与TitleLabel对齐
- Android 不能使用内部资源
- JavaWeb学习笔记之SSM框架搭建配置文件
- 计蒜之道第四场第一题:淘宝流量分配
- Spring AOP初步了解
- ScrollView 里面 嵌套ListView 导致listview无法完全显示数据的问题
- C++中const详解
- web应用中的路径问题
- Codevs 1225 八数码难题
- 内连接与外连接
- leetcode 92 Reverse Linked List II
- Redis作者谈Redis比较适合的应用场景
- Node.js服务器端编程实践(一):服务器创建与hello world应答
- 流媒体管理及图像统计人数识别模块接口方案