因为要做一个类似美团的团购产品,scrollview中还有嵌入listview,要是直接把listview嵌进scrollview中,listview的高度是固定的不能进行滑动。默认情况下Android是禁止在ScrollView中放入另外的ScrollView的,它的高度是无法计算的。这就导致里面的listview高度不能确定,所以只能在程序中动态设置代码如下:

 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的 嵌套复杂布局了。


更多相关文章

  1. android开发怎样让悬浮Activity只是隐藏而不销毁
  2. Android(安卓)UI开发 View自绘控件 分享
  3. Android悬浮窗开发招式集合
  4. 去掉listview的分割线和分割线的颜色,高度的设置
  5. Activity状态保存
  6. 自定义Drawable
  7. 《Android(安卓)Dev Guide》系列教程17:建立自定义View组件
  8. Android(安卓)增强版百分比布局库 为了适配而扩展
  9. Android(安卓)Fragment事件透传

随机推荐

  1. android 动态改变控件大小的方法
  2. Android关机重启分析
  3. 【30篇突击 android】源码统计 十一
  4. Backtrace in Android
  5. 如何提高Android代码的安全性
  6. [Android] patchrom的随笔(个人运行记录..
  7. android查看程序运行内存
  8. Android Zxing修改二维码中扫描框的大小
  9. android 程序框架--资源和资产
  10. mac 下配置ANDROID_HOME环境变量