项目中那些事|ListView中嵌套ListView问题
来源:互联网 发布:一个程序员的基本技术 编辑:程序博客网 时间:2024/05/16 09:16
要在一个ListView中放入另一个ListView,也即在一个ListView的每个 item 中放入另外一个ListView。但刚开始的时候,会发现放入的子ListView会显示不完全(我这里只显示前一项),它的高度始终有问题。因为默认情况下Android是禁止在ScrollView中放入另外的ScrollView的,这种设计是不推荐的。
但是项目需要,发现有StackOverflow(这里给大家推荐一下http://stackoverflow.com/questions/tagged/android ,一个不错的问答网站)上的牛人已经解决了这个问题,经过试验发现是可以解决问题的,它的思路就是在设置完ListView的Adapter后,根据ListView的子项目重新计算ListView的高度,然后把高度再作为LayoutParams设置给ListView,这样它的高度就正确了,以下是源码:
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); }
在设置ListView的Adapter后调用此静态方法即可让ListView正确的显示在其父ListView的 itme 中。但是要注意的是,子ListView的每个Item必须是LinearLayout,不能是其他的,因为其他的Layout(如RelativeLayout)没有重写onMeasure(),所以会在onMeasure()时抛出异常。
- 项目中那些事|ListView中嵌套ListView问题
- 项目中那些事| ListView 一些问题
- ListView中嵌套ListView
- ListView中嵌套listView
- ListView中嵌套ListView
- ListView中嵌套ListView
- ListView中嵌套ListView
- ListView中嵌套ListView
- ScrollView中嵌套ListView问题
- ListView中嵌套HorizontalListView问题
- ScollView中嵌套ListView问题
- Viewpager中嵌套ListView问题
- 关于ListView的Item中嵌套ProgressBar的那些事
- listview中嵌套子listview,解决子listview点击问题
- 横向ListView中嵌套ListView
- Android 中ListView 嵌套 ListView
- Android listview 中嵌套 listview
- ScrollView中嵌套ListView
- TCP/IP,HTTP,SOAP等协议之区别
- ssl中间人攻击
- windows下Emacs的安装与配置
- 调试Bluetooth时的一些札记
- c++多继承条件下的虚函数列表及其内容
- 项目中那些事|ListView中嵌套ListView问题
- IN OUT NOCOPY 分析
- 程序的内存分配问题
- C++ 增强型方法
- Windows Server时间服务器配置方法
- 使用sitemesh建立复合视图 - 1.hello
- x264_macroblock_analyse模块分析-2
- 用NMAKE创建VS2012 C++工程二 创建目录结构
- BT 协议调用流程