zoukankan      html  css  js  c++  java
  • 关于ScrollView嵌套ListView

    今天工作中需要这个,以前也写过这样的需求但是没有记录下来,今天趁机记录一下。也希望对大家工作有帮助!谢谢。

    来电与主题无关的,要实现ScrollView滚动条的隐藏,有两种方法,

    一种是在XML的ScrollView布局中加入属性android:scrollbars="none"

    另一种则是在代码中获取ScrollView后进行scroll.setVerticalScrollBarEnabled(false);

    下面来说下ScrollView如何嵌套ListView

    按常理,ScrollView套ListView会存在两个问题:

    1.里面的listView高度无法算出来,通常只能显示listview的其中一行
    2.listview不能滚动

    为什么ScrollView嵌套ListView会出现问题,只显示一个item的问题。

    这个是计算ListView高度产生的问题。

    我们可以这样解决。

    第一给ListView一个固定的高度。

    例如设置android:layout_height="200dip",那么可以解决,可能会影响美观。

    第二给ScrollView设置属性:android:fillViewport="true"
    测试的时候发现,如果ListView加载的数据不多的话,确实可以解决,但是当ListView加载的数据较多的时候,仍旧无法显示完全,并且这个时候ListView自身也无法滚动了。

    第三,我也是按照这个方法的,用代码重新测量下ListView的高度。

     1    private void initLoad() {
     2         ListLoadAdapter adapter = new ListLoadAdapter();
     3         lvLoan.setAdapter(adapter);
     4         setListViewHeightBasedOnChildren(lvLoan);
     5     }
     6     public void setListViewHeightBasedOnChildren(ListView listView) {
     7         // 获取ListView对应的Adapter
     8         ListAdapter listAdapter = listView.getAdapter();
     9         if (listAdapter == null) {
    10             return;
    11         }
    12 
    13         int totalHeight = 0;
    14         for (int i = 0, len = listAdapter.getCount(); i < len; i++) {
    15             // listAdapter.getCount()返回数据项的数目
    16             View listItem = listAdapter.getView(i, null, listView);
    17             // 计算子项View 的宽高
    18             listItem.measure(0, 0);
    19             // 统计所有子项的总高度
    20             totalHeight += listItem.getMeasuredHeight();
    21         }
    22 
    23         ViewGroup.LayoutParams params = listView.getLayoutParams();
    24         params.height = totalHeight+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
    25         // listView.getDividerHeight()获取子项间分隔符占用的高度
    26         // params.height最后得到整个ListView完整显示需要的高度
    27         listView.setLayoutParams(params);
    28     }
  • 相关阅读:
    BZOJ2741:[FOTILE模拟赛]L
    BZOJ3996:[TJOI2015]线性代数
    BZOJ3876:[AHOI2014]支线剧情
    BZOJ1861:[ZJOI2006]Book书架
    BZOJ3190:[JLOI2013]赛车
    HDU-1540 Tunnel Warfare 【线段树+单点修改+区间更新】
    HDU-1846 Brave Game 【巴什博弈】
    HDU-1421 搬寝室 【DP】
    HDU-4734 F(x) 【数位DP】
    AHU-412 Bessie Come Home 【Dijkstra】
  • 原文地址:https://www.cnblogs.com/itpepe/p/4919848.html
Copyright © 2011-2022 走看看