之前发现了自己的APP在处理两个listview时产生的一个bug。当两个listview中的item数量多出手机屏幕时,listview不能显示完全。一开始觉得只要加一个scrollview就可以了,但是后来发现想法是错误的,因为listview本身也是一个scrollview,那么scrollview嵌套scrollview的问题就很麻烦了,到底把滚动权交给谁,结果是哪个listview都不能滚动,后来谷歌了一大圈,终于发现了两个帖子,给我启发:

1 stackoverflow

http://stackoverflow.com/questions/3495890/how-can-i-put-a-listview-into-a-scrollview-without-it-collapsing

2 csdn

http://blog.csdn.net/huangbiao86/article/details/7978149

主要的解决方法,就是禁用listview的滚动条,从而只有一个scrollview的滚动条。那么怎么禁用?或者限定listview的android:layout_width。

网上提供的方法就是在刷新listview之前,计算list item的总的高度,从而设置android:layout_width,那么就可以做到固定高度了。

/***
* 动态设置listview的高度
*
* @param 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();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight
+ (listView.getDividerHeight() * (listAdapter.getCount() + 1));
listView.setLayoutParams(params);
}

虽然这么做了,但是我最后还是发现高度不对,为什么呢?我调试发现,无论item里面的textview不管有几行,item的getMeasreHeight始终是固定值。那么怪不得了,textview的高度无法计算的话,那么高度也还是确定不了。无奈,我只能选择折中,设置textview的属性:

android:sinleline="true"

android:ellipsie="end"

android::layout_width ="wrap_content"

那么设置textview行为固定啦,这样就可以保证高度计算的准确。

至此,bug解完

android下activity中多个listview只允许主界面滚动的更多相关文章

  1. Android下EditText中的字体不统一问题

    Android下EditText中的字体不统一问题 好久没写,今天心情好略记下解决的某bug 在一个登录界面有帐号和密码两个EditText,但是却发现两个EditText的hint的英文字体不同,看 ...

  2. Android 管理Activity中的fragments

    为了管理Activity中的fragments,需要使用FragmentManager,为了得到它,需要调用Activity中的getFragmentManager()方法,接下来详细介绍,感兴趣的朋 ...

  3. 打造通用的Android下拉刷新组件(适用于ListView、GridView等各类View)

    前言 近期在做项目时,使用了一个开源的下拉刷新ListView组件.极其的不稳定,bug还多.稳定的组件又写得太复杂了,jar包较大.在我的一篇博客中也讲述过下拉刷新的实现,即Android打造(Li ...

  4. Android 在Activity中对SQLite的操作

    注册 package com.scme.ui; import android.app.Activity; import android.content.Intent; import android.o ...

  5. android应用activity中调出输入法后界面调整问题的解决

    在自己写的一个小应用中发现一个问题,当调出输入法后界面最下方的一个按钮被挤到了输入法的上面,这样很不美观,所以找了一下解决办法记录如下: 在AndroidManifest.xml文件中找到对应的act ...

  6. Android笔记——Activity中的回传数据案例(装备选择)

    1.创建程序: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns: ...

  7. Android笔记——Activity中的数据传递案例(用户注冊)

    1.创建程序activity_main: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andro ...

  8. Android课程---Activity中保存和恢复用户状态

    onSaveInstanceState 保存 在暂停之后和保存之前调用 onRestoreInstanceState 恢复 再启动之后和显示之前调用 package com.example.chens ...

  9. Android之activity中新建控件

    了解了5大布局,我们会发现这些布局都是静态的,如何让系统自动生成控件呢?这就需要activity来帮忙了 今天我们讲的就是用activity新建布局 用案例来说吧! 实现一个输入行和列自动生成表格并生 ...

随机推荐

  1. css 动画效果

    要搞就搞明白,一知半解时停止研究 损失最大     css3意义: CSS3 动画 通过 CSS3,我们能够创建动画,这可以在许多网页中取代动画图片.Flash 动画以及 JavaScript. 重点 ...

  2. 删除word文档中表格后的空行

    处理办法为: 方法1:使上.下页边距数值缩小,从而使页面扩大能容纳下这一段落行.   方法2:光标处于最后段落行符号前,右键→段落→缩进和间距→间距→行距→固定值→设置值→1磅→确定.

  3. vs2013中头文件中大小写的切换的快捷键

    1.选中内容 2.ctrl+shift+u 例如:  #include "LayerStart.h"   ->   #include "LAYERSTART.H&q ...

  4. 配置ASP.NET Nhibernate

    web.config:配置sql server数据库 <configuration> <configSections> <!--NHibernate Section--& ...

  5. bnuoj 33648 Neurotic Network(树形模拟题)

    http://www.bnuoj.com/bnuoj/problem_show.php?pid=33648 [题解]:结果先对MOD*2取模,才能得到结果是否是正确的奇偶问题,得到最后结果之后再对MO ...

  6. Useful related java API for Android

    Language_suport and Other Language-Oriented API: strings,exceptions, threads, #java.lang.* offers th ...

  7. BZOJ 1143: [CTSC2008]祭祀river 最大独立集

    题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=1143 题解: 给你一个DAG,求最大的顶点集,使得任意两个顶点之间不可达. 把每个顶点v ...

  8. VMware虚拟机中Hadoop服务的端口无法访问的问题

    今天安装了一个hadoop集群,因为已经在单个虚拟机上安装成功,所以初期安装相对顺利. 初始环境如下:       通过Vmware Esxi服务器虚拟机出来四台机器,每台机器的网络配置如下:     ...

  9. 【POJ】【2987】Firing

    网络流/最大权闭合子图 胡伯涛论文里有讲…… sigh……细节处理太伤心了,先是count和ans输出弄反了,改过来顺序时又忘了必须先算出来ans!要是不执行一下Dinic的话count就无意义了…… ...

  10. [bzoj 2159]Crash的文明世界

    今天看到一个鬼题 心情好的时候写 [题意]求树上所有点对距离的k次方和,所有边权为1 大爷方的题解:http://tonyfang.is-programmer.com/posts/204972.htm ...