zoukankan      html  css  js  c++  java
  • 浅谈ScrollView嵌套ListView及ListView嵌套的高度计算

    引言

      在Android开发中,我们有时会需要使用ScrollView中嵌套ListView的需求。例如:在展示信息的ListView上还有一部分信息展示区域,并且要求这部分信息展示区域在ListView信息比较多的时候也是可以滑动的,而不是固定不变的。这时,我们一般会将ScrollView和ListView嵌套在一起使用。但是这会导致ListView展示不全,然后也会有滑动冲突问题。下面我们来看看怎么解决。

    解决方案

      主动计算和设置ListView的高度,这样就可以合理的展示ListView的高度。代码如下:

     1 public void setListViewHeightBasedOnChildren(ListView listView) {
     2         // 获取ListView对应的Adapter
     3         ListAdapter listAdapter = listView.getAdapter();
     4         if (listAdapter == null) {
     5             return;
     6         }
     7         int totalHeight = 0;
     8         // listAdapter.getCount()返回数据项的数目
     9         for (int i = 0; i < listAdapter.getCount(); i++) {
    10             View listItem = listAdapter.getView(i, null, listView);
    11             // 计算子项View 的宽高
    12             listItem.measure(0, 0);
    13             // 统计所有子项的总高度
    14             totalHeight += listItem.getMeasuredHeight();
    15         }
    16         ViewGroup.LayoutParams params = listView.getLayoutParams();
    17         params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
    18         // listView.getDividerHeight()获取子项间分隔符占用的高度
    19         // params.height最后得到整个ListView完整显示需要的高度
    20         listView.setLayoutParams(params);
    21     }
  • 相关阅读:
    luogu P3801 红色的幻想乡
    [USACO07OPEN]吃饭Dining
    [SCOI2007]蜥蜴
    [SDOI2011]染色
    [USACO07DEC]Sightseeing Cows
    [HNOI2007]紧急疏散EVACUATE
    [ZJOI2009]假期的宿舍
    [SDOI2013]费用流
    [CQOI2009]跳舞
    使用chrony安装chrony
  • 原文地址:https://www.cnblogs.com/dreamGong/p/5900187.html
Copyright © 2011-2022 走看看