关于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     }
时间: 2024-10-20 18:41:35

关于ScrollView嵌套ListView的相关文章

anroid中ScrollView嵌套ListView

有时候项目里面需要ScrollView嵌套ListView,但是正常下ListView只会显示一行多一点,解决方法就是填充ListView数据后重新计算ListView的高度,这里有两种方法来实现. 第一种方法:重写ListView [java] view plaincopyprint? package com.jwzhangjie.test; import android.content.Context; import android.util.AttributeSet; import and

四种方案解决ScrollView嵌套ListView问题(转)

在工作中,曾多次碰到ScrollView嵌套ListView的问题,网上的解决方法有很多种,但是杂而不全.我试过很多种方法,它们各有利弊. 在这里我将会从使用ScrollView嵌套ListView结构的原因.这个结构碰到的问题.几种解决方案和优缺点比较,这4个方面来为大家阐述.分析.总结. 实际上不光是ListView,其他继承自AbsListView的类也适用,包括ExpandableListView.GridView等等,为了方便说明,以下均用ListView来代表. 一. 为什么要使用S

四种方案解决ScrollView嵌套ListView问题

在工作中,曾多次碰到ScrollView嵌套ListView的问题,网上的解决方法有很多种,但是杂而不全.我试过很多种方法,它们各有利弊. 在这里我将会从使用ScrollView嵌套ListView结构的原因.这个结构碰到的问题.几种解决方案和优缺点比较,这4个方面来为大家阐述.分析.总结. 实际上不光是ListView,其他继承自AbsListView的类也适用,包括ExpandableListView.GridView等等,为了方便说明,以下均用ListView来代表. 一. 为什么要使用S

ScrollView嵌套ListView问题

ScrollView嵌套ListView问题 导致Listview  首先导致的 是 Listview 的item 条数显示不完全, 这是因为item 中的 Textview 字数太多的问题 一定要注意 item 是 线性布局 ,二 item 中的 Textview 自动换行也会导致 item 条数显示不正确, 所以 有了如下的解决办法 1,保证 item 是 线性布局, 2. 重写Listview ,代码如下 : public class MyWuliuLsitview extends Lis

Android 中ScrollView嵌套ListView 最简单有效的处理方法

第一次写博客,有错的地方大家可以指出: 大家都知道在ScrollView嵌套ListView,ListView会显示不完全,无法计算ListView的高度,要解决在一个滑动界面中显示ListView和其他布局,有两种方法: 第一种:就是让listView的高度全部展示出来,那么这个就要对ListView进行封装,重新设置高度:代码如下: public class ListViewForScrollView extends ListView { public ListViewForScrollVi

ScrollView嵌套ListVIew/GridView显示问题

ScrollView嵌套ListView/GridView的显示问题可以说是安卓开发者都会遇到的问题,同时处理起来也比较麻烦,最近也遇到了这种问题,在这整理一下做个记录. 1.对于ListView最常用的就是动态的根据Adapter来计算列表的高度,在设置完列表之后调用一下对应的计算方法即可: /** * 动态设置ListView的高度 * * @param listView */ public static void setListViewHeightBasedOnChildren(ListV

一键解决ScrollView嵌套ListView仅仅显示一行的问题

/** * 解决ScrollView嵌套ListView仅仅显示一行的问题 * * @param listView */ private void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return; } int totalHeight = 0; for (int i = 0;

ScrollView嵌套ListView只显示一行

错误描述 ScrollView嵌套ListView中导致ListView高度计算不正确,只显示一行. 解决方法 重写ListView的onMeasure方法,代码如下. @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int mExpandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_

Android中ScrollView嵌套ListView只显示一行的解决方案

Android中ScrollView嵌套ListView只显示一行的解决方案 解决方案1: 直接把包含ListView控件的ScrollView控件从布局文件中去除,留下ListView控件,这是最简单快捷的解决办法. 如果一定要在ScrollView中包含ListView,则参考 解决方案2: public void showlist() { List<HashMap<String, String>> dataHashMaps = new ArrayList<HashMap

四种方法解决scrollview嵌套listview,listview高度确定问题

以下文章转自@安卓泡面 在工作中,曾多次碰到ScrollView嵌套ListView的问题,网上的解决方法有很多种,但是杂而不全.我试过很多种方法,它们各有利弊. 在这里我将会从使用ScrollView嵌套ListView结构的原因.这个结构碰到的问题.几种解决方案和优缺点比较,这4个方面来为大家阐述.分析.总结. 实际上不光是ListView,其他继承自AbsListView的类也适用,包括ExpandableListView.GridView等等,为了方便说明,以下均用ListView来代表