anroid中ScrollView嵌套ListView

有时候项目里面需要ScrollView嵌套ListView,但是正常下ListView只会显示一行多一点,解决方法就是填充ListView数据后重新计算ListView的高度,这里有两种方法来实现。

第一种方法:重写ListView

[java] view plaincopyprint?

  1. package com.jwzhangjie.test;
  2. import android.content.Context;
  3. import android.util.AttributeSet;
  4. import android.widget.ListView;
  5. public class MyListView extends ListView{
  6. public MyListView(Context context) {
  7. super(context);
  8. }
  9. public MyListView(Context context, AttributeSet attrs) {
  10. super(context, attrs);
  11. }
  12. @Override
  13. protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
  14. int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
  15. MeasureSpec.AT_MOST);
  16. super.onMeasure(widthMeasureSpec, expandSpec);
  17. }
  18. }

第二种方法:添加完数据后计算ListView中所有Item的高度和间隔线的高度然后重新设置ListView的高度

[java] view plaincopyprint?

  1. public void setListViewHeightBasedOnChildren(ListView listView) {
  2. ListAdapter listAdapter = listView.getAdapter();
  3. if (listAdapter == null)
  4. return;
  5. if (listAdapter.getCount() <= 1)
  6. return;
  7. int totalHeight = 0;
  8. View view = null;
  9. for (int i = 0; i < listAdapter.getCount(); i++) {
  10. view = listAdapter.getView(i, null, listView);
  11. view.measure(0,0);
  12. totalHeight += view.getMeasuredHeight();
  13. }
  14. ViewGroup.LayoutParams params = listView.getLayoutParams();
  15. params.height = totalHeight
  16. + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
  17. listView.setLayoutParams(params);
  18. listView.requestLayout();
  19. }

设置完数据后,调用setListViewHeightBasedOnChildren(listview);

注意:ListView的item只能使用LinearLayout包含

时间: 2024-10-11 12:18:57

anroid中ScrollView嵌套ListView的相关文章

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

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

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

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

android中ScrollView嵌套ListView或GridView显示位置问题

Android中ScrollView中嵌套ListView或GridView时在开始进入界面时总是显示中间位置,开头的位置显示不出来.这种情况下只需要在ScrollView的父控件中添加以下两行代码即可. 1 android:focusableInTouchMode="true" 2 android:focusable="true" 还有一个问题:在ScrollView嵌套ListView或GridView时仅仅显示一行或两行,ListView或GridView无法

四种方案解决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

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_

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

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

ScrollView嵌套ListView、GridView只显示一行,psts显示不出来

我们经常会用到在ScrollView嵌套ListView.GridView,给layout_height设置wrap或者match的时候,结果只显示一行,而给它设置一个固定的高度虽然能显示出来,但是会显示不全,或者空出一段. 原因:ScrollView在计算高度的时候,如果是wrap或者是match就会出错,结果只显示一行. 解决方案:定义一个类GridView4ScrollView继承GridView,然后重写onMeasure方法 @Override /** * 重写该方法,重新计算Grid