当前位置: 首页 > news >正文

anroid中ScrollView嵌套ListView

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

第一种方法:重写ListView

[java] view plain copy print ?
  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的高度

[java] view plain copy print ?
  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包含

转载于:https://www.cnblogs.com/jasonxcj/p/5052416.html

相关文章:

  • 【学神-RHEL7】1-19-RHEL7内核编译
  • hive建表没使用LZO存储格式,可是数据是LZO格式时遇到的问题
  • 找不到或无法加载已注册的 .Net Framework Data Provider。
  • react Error: query failed: synchronization failed
  • web页面如何播放amr的音频文件
  • liunx运维常见命令
  • mysql的排障之二
  • [转]关于jquery中html()、text()、val()的区别
  • netfilter/iptables 结构要点
  • nginx初级安装配置
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • Codeforces 461B - Appleman and Tree 树状DP
  • Objective-C之成魔之路【9-类构造方法和成员变量作用域、以及变量】
  • MyBatis学习总结(11)——MyBatis动态Sql语句
  • Android应用正确使用扩展SD卡,特别是安卓4.4以后的版本
  • 【译】JS基础算法脚本:字符串结尾
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • 3.7、@ResponseBody 和 @RestController
  • bearychat的java client
  • Brief introduction of how to 'Call, Apply and Bind'
  • ES2017异步函数现已正式可用
  • Hibernate【inverse和cascade属性】知识要点
  • JavaScript异步流程控制的前世今生
  • JS学习笔记——闭包
  • nodejs调试方法
  • PAT A1017 优先队列
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Redis学习笔记 - pipline(流水线、管道)
  • Sass Day-01
  • Selenium实战教程系列(二)---元素定位
  • storm drpc实例
  • TCP拥塞控制
  • TypeScript迭代器
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 程序员该如何有效的找工作?
  • 人脸识别最新开发经验demo
  • 我的zsh配置, 2019最新方案
  • 中文输入法与React文本输入框的问题与解决方案
  • Linux权限管理(week1_day5)--技术流ken
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​【已解决】npm install​卡主不动的情况
  • ​ArcGIS Pro 如何批量删除字段
  • # 计算机视觉入门
  • #pragma 指令
  • #每天一道面试题# 什么是MySQL的回表查询
  • (003)SlickEdit Unity的补全
  • (16)Reactor的测试——响应式Spring的道法术器
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (附源码)ssm码农论坛 毕业设计 231126
  • (转)socket Aio demo
  • (转)原始图像数据和PDF中的图像数据
  • (转载)(官方)UE4--图像编程----着色器开发
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON