Android布局中ScrollView与ListView的冲突的最简单方法
2014-04-02 15:45
447 查看
看到网上流行的一种使用方法是:
这个太麻烦了,而且效果又不是很明显。
有人的总结如下:
只要在设置ListView的Adapter后调用此静态方法即可让ListView正确的显示在其父ListView的ListItem中。但是要注意的是,子ListView的每个Item必须是LinearLayout,不能是其他的,因为其他的Layout(如RelativeLayout)没有重写onMeasure(),所以会在onMeasure()时抛出异常。
在ScrollView中嵌套ListView(或者ScrollView)的另外一个问题就是,子ScrollView中无法滑动的(如果它没有显示完全的话),因为滑动事件会被父ScrollView吃掉,如果想要让子ScrollView也可以滑动,只能强行截取滑动事件,有牛人在论坛中发过代码说可以。虽然我没有亲自试过,但估计是可行的。
虽然在ScrollView中显示ScrollView在技术上的难题可以攻破,但是这样的设计却是非常差的用户体验因为用户会不容易看到和操作子ScrollView中的内容。比如好的设计是,父ListView的每个Item只显示概括性的描述,然后点击其Item会进入另外一个页面来详细描述和展示以及对这个Item的操作。
于是找到另外两种比较简单的方法,而且又没有影响的:
1.在ScrollView中添加一属性 android:fillViewport="true" ,这样就可以让ListView全屏显示了
2.指定ListView的高度 android:layout_height="420dp" ;
转自:http://www.2cto.com/kf/201109/102537.html
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); } }
这个太麻烦了,而且效果又不是很明显。
有人的总结如下:
只要在设置ListView的Adapter后调用此静态方法即可让ListView正确的显示在其父ListView的ListItem中。但是要注意的是,子ListView的每个Item必须是LinearLayout,不能是其他的,因为其他的Layout(如RelativeLayout)没有重写onMeasure(),所以会在onMeasure()时抛出异常。
在ScrollView中嵌套ListView(或者ScrollView)的另外一个问题就是,子ScrollView中无法滑动的(如果它没有显示完全的话),因为滑动事件会被父ScrollView吃掉,如果想要让子ScrollView也可以滑动,只能强行截取滑动事件,有牛人在论坛中发过代码说可以。虽然我没有亲自试过,但估计是可行的。
虽然在ScrollView中显示ScrollView在技术上的难题可以攻破,但是这样的设计却是非常差的用户体验因为用户会不容易看到和操作子ScrollView中的内容。比如好的设计是,父ListView的每个Item只显示概括性的描述,然后点击其Item会进入另外一个页面来详细描述和展示以及对这个Item的操作。
于是找到另外两种比较简单的方法,而且又没有影响的:
1.在ScrollView中添加一属性 android:fillViewport="true" ,这样就可以让ListView全屏显示了
2.指定ListView的高度 android:layout_height="420dp" ;
转自:http://www.2cto.com/kf/201109/102537.html
相关文章推荐
- android Notification 进度条
- android 弹出窗口
- Android内存泄漏简介
- android
- 让android的控件EditText不自动获取焦点
- Android中实现不同文字颜色和图文混排的Span总结
- Android内存泄露造成的OOM问题
- Android 对Layout_weight属性完全解析以及使用ListView来实现表格
- Android的NDK开发(1)————Android JNI简介与调用流程
- 【IntentService】Android中IntentService的原理及使用
- Drawable与Bitmap转换
- android自动更新程序,安装完以后就什么都没有了,没有出现安装成功的界面的问题
- 定位功能
- Android中如何以编程方式(programmatically)载入 NinePatch 图片
- Android 带你从源码的角度解析Scroller的滚动实现原理
- android 学习: 背景滚动效果
- Android4.2.2 CameraService服务启动和应用端camera初始化记录
- 【AsyncTask】详解Android中AsyncTask的使用
- 【android-view】searchView 的搜索按钮使用问题。
- win7 安装 Android Studio