• anroid中ScrollView嵌套ListView


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

    第一种方法:重写ListView

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

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

    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.   
    8.         int totalHeight = 0;  
    9.         View view = null;  
    10.         for (int i = 0; i < listAdapter.getCount(); i++) {  
    11.             view = listAdapter.getView(i, null, listView);  
    12.             view.measure(0,0);  
    13.             totalHeight += view.getMeasuredHeight();  
    14.         }  
    15.         ViewGroup.LayoutParams params = listView.getLayoutParams();  
    16.         params.height = totalHeight  
    17.                 + (listView.getDividerHeight() * (listAdapter.getCount() - 1));  
    18.         listView.setLayoutParams(params);  
    19.         listView.requestLayout();  
    20.     }  


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

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

  • 相关阅读:
    ThinkPHP中pathinfo模式与URL重写
    JS分割字符串并放入数组的函数
    js解决弹窗问题实现班级跳转DIV示例
    javascript客户端遍历控件与获取父容器对象
    Apache 虚拟目录和默认首页的设置
    linux Apache CGI 安装配置
    apache与和mysql重启命令
    带你从零学ReactNative开发跨平台App开发(三)
    带你从零学ReactNative开发跨平台App开发(一)
    C#/Net定时导出Excel并定时发送到邮箱
  • 原文地址:https://www.cnblogs.com/jasonxcj/p/5052416.html
Copyright © 2020-2023  润新知