关于在ScrollView中嵌套ListView,ListView显示不全的问题

工具篇——ListViewForScrollView(解决ScrollView嵌套ListView,ListView显示不全的问题) 写代码的四点: 1.明确需求。要做什么? 2.分析思路。要怎么做?(1,2,3……) 3.确定步骤。每一个思路要用到哪些语句、方法和对象。 4.代码实现。用具体的语言代码将思路实现出来。学习新技术的四点: 1.该技术是什么? 2.该技术有什么特点?(使用需注意的方面) 3.该技术怎么使用?(写Demo) 4.该技术什么时候用?(在Pr... 阅读详情

如题,解决方案有三种:

1. 自定义ListView,重载onMeasure()方法,设置全部显示(推荐,最简便快捷)

<span style="font-family:SimSun;">package cn.llzg.widget;

import android.widget.ListView;

public class ScrollViewWithListView extends ListView {

	public ScrollViewWithListView(android.content.Context context,
			android.util.AttributeSet attrs) {
		super(context, attrs);
	}

	/**
	 * Integer.MAX_VALUE >> 2,如果不设置,系统默认设置是显示两条
	 */
	public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
		int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
				MeasureSpec.AT_MOST);
		super.onMeasure(widthMeasureSpec, expandSpec);

	}

}
</span>


2、计算listview总高度并设置

<span style="font-family:SimSun;">ListView listView = (ListView) findViewById(id);
YourAdapter adapter = new MyAdapter("初始化你的适配器");
listView.setAdapter(adapter);
setListViewHeightBasedOnChildren(listView);(在setAdapter后调用自定义的方法)</span>

<span style="font-family:SimSun;">	public void setListViewHeightBasedOnChildren(ListView listView) {
		// 获取ListView对应的Adapter
		ReplyListAdapter listAdapter = (ReplyListAdapter) listView.getAdapter();
		if (listAdapter == null) {
			return;
		}

		int totalHeight = 0;
		int tmp = 0;
		//Log.i("------------->", listAdapter.getCount() + "");
		for (int i = 0, len = listAdapter.getCount(); i < len; i++) {
			Log.i("------------>i", i+"");
			// listAdapter.getCount()返回数据项的数目
			View listItem = listAdapter.getView(i, null, listView);
			// 计算子项View 的宽高
			listItem.measure(desiredWidth, 0);
			// 统计所有子项的总高度
			totalHeight += listItem.getMeasuredHeight();
			tmp = listItem.getMeasuredHeight();
			Log.i("------------>totalHeight", totalHeight+"");
		}

		ViewGroup.LayoutParams params = listView.getLayoutParams();
		params.height = totalHeight
				+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
		// listView.getDividerHeight()获取子项间分隔符占用的高度
		// params.height最后得到整个ListView完整显示需要的高度
		listView.setLayoutParams(params);
	}</span>


PS1>>>使用该方法需要注意:子ListView的每个Item必须是LinearLayout,不能是其他的,因为其他的Layout(如RelativeLayout)没有重写onMeasure(),所以会在onMeasure()时抛出异常。

PS2>>> 这种方法,测试下来发现,虽然ListView不仅仅只显示一行了,但是ListView的显示还是不完全,继续GOOGLE后,发现有人提出
int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.AT_MOST);
然后listItem.measure(0, 0);改成调用 listItem.measure(desiredWidth, 0); 
理由为:Item内容为英文的情况下listItem.measure(0, 0);可行,但有多行中文时,用listItem.measure(0, 0);测量高度会不准确
采用如上方法所示修改代码后发现还是显示不正确,ListView下面多出一大段空白,(不知道是不是个例,最近手机刚更新到Android4.4系统,发现在显示字体上有诸多问题),总之,后面就没再深究,采用了第一种方法,如果有知道解决方案的,还请指教

【注】以上两种方法可以解决scrollView内嵌listView,但是有一个问题是第一次进入界面时动态加载listview的items后页面会跳转到listview的第一个子项,把android:descendantFocusability="blocksDescendants" 这个属性加在ScrollView可解决这个问题

3.请看博客 http://www.cnblogs.com/zjjne/p/3428480.html
文章太长,看起来实现很复杂,况且问题解决了,就没再看完,不过也是一种思路
实现步骤如下:

1、继承LinearLayout,既然会冲突那就不用ListView 改成线性布局做动态布局效果
2、继承BaseAdapter ,可以参照一下Android app源码中 Widget 目录下的SimpleAdapter 为前面扩展的LinearLayout做数据。
3、模拟数据填充扩展后的BaseAdapter 为扩展后的LinearLayout 加载数据


详解嵌套ListView、ScrollView布局显示不全的问题 在项目开发中,可能经常遇到嵌套ListView、ScrollView的问题,百度一搜,都是现成的代码,而且都是一样的,就是重写onMeasure方法,但是为什么要那么写,估计就没多少人知道了,这里进行深入的剖析一下下,重点看onMeasure方法,代码如下:/** * Created by hailonghan on 15/5/28. */ public class ExpandListView 阅读详情

相关推荐

两种方法解决ScrollView嵌套ListView出现ListView显示不全的问题

一、设置ScrollView的fillViewport=true  二、自定义ListView,重写onMeasure方法 二二

wusirandroid的博客 395

ScrollView中嵌套ListView时显示不全的问题解决办法

最近在码代码的过程中将ScrollView内嵌套了ListView使用,结果出现一个问题,就是在ListView只显示了一两行,通过查阅资料发现是因为当ScrollView嵌套ListView时无法正确计算ListView的大小,在网上查阅资料后找到了几种解决办法,现总结如下: 1.在ScrollView中将android:fillViewport属性设置为"true",此方法适用于Scroll

ljd1991的博客 788

解决scrollview嵌套listview显示不全的四种方法

重新测量listview高度,或者自定义listview

android ScrollView嵌套ListView

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

u010152805的专栏 2131

解决ScrollView嵌套ListView问题的几种方案

解决ScrollView嵌套ListView问题的几种方案

ScrollView GradView ListView 嵌套滑动冲突、item内容显示不全

结合自己开发的经历也参考其他人的解决方案,对 ScrollView GradView ListView 嵌套滑动冲突、item内容显示不全做的总结

解决scrolview 中含有listview问题

 public class ListViewForScrollView extends ListView { public ListViewForScrollView(Context context) { super(context); } public ListViewForScrollView(Context context, AttributeSet attrs) { sup

xm_andy的博客 535

解决android ScrollView滚动显示不全问题-附件资源

解决android ScrollView滚动显示不全问题-附件资源

关于ScrollView嵌套滑动控件出现的内容显示不全问题

当你使用ScrollView嵌套ListView、GridView、ViewPager等时,你会发现里面的东西显示不全或者完全不显示(ViewPager),对于这种情况,有两种方式。 对于ListView和GridView这种显示不全的情况,你可以重写一个继承自他们的类,重写onMeasure方法: @Override protected void onMeasure(int widt

MaPengHao的专栏 3902

Android解决ScrollView下嵌套ListView和GridView中内容显示不全的问题

最近为公司做的一个Demo里面用到了ScrollView嵌套了GridView和ListView,然而在嵌套的时候我发现GridView和ListView都是不能完全显示,显示的基本上都是单行的数据,最后查找资料和翻阅文档看到原因是ListView和GridView的绘制过程中在ScrollView中无法准确的测量自身的高度,而且listVIew和GridView抢占了焦点,使得ListView和GrideView具有自身的显示的效果,这样就测量出显示一行条目即可的距离,其他的条目根据自身的滑动显示。 我的XMl的部分代码如下: <ScrollView android:layout_he

STM32驱动电磁阀电路设计:从光耦选型到MOSFET驱动的实战解析

本文深入解析了STM32驱动24V电磁阀的完整电路设计,重点探讨了光耦选型与MOSFET驱动两大核心环节。针对电平转换与电气隔离需求,详细对比了EL357N与TLP2310等光耦在CTR、速度及耐压等关键参数上的差异与应用场景。同时,文章提供了MOSFET关键参数解读、驱动电路优化方案(如推挽驱动)以及完整的PCB布局、电源处理与调试避坑指南,旨在帮助工程师构建稳定可靠的工业控制电路。

weixin_29184371的博客 234

【Android界面实现】解决ScrollView中嵌套Listview,Listview中嵌套Listview显示不完整和滑动冲突的问题

在一个滑动控件或者是布局里面,添加另外一个可以滑动的控件,通常会造成一些莫名其妙的问题。今天主要介绍在工作中遇到的,在ScrollView布局中嵌套Listview显示不正常,和在Listview中嵌套Listview的滑动冲突的问题。 1.ScrollView布局中嵌套Listview显示不正常的解决方案 目前来说,解决这个问题有好几种解决方案,这里只介绍其中两种比较简单易行的其中两

hellohhj的专栏 2310

扣子工作流实战演练

例如,你可以在代码节点的输入中引用大模型节点的输出,这样代码节点就可以使用大模型节点的输出。扣子的工作流节点并不是固定的,而是由一系列可以任意添加的节点组成的,每个节点都有其特定的功能和用途。扣子工作流中常见的节点类型如图4-2所示。在图像生成节点中设置模型为人像,输入参数名为input,变量值引用开始节点的renwu,正向提示词为{{input}},如图4-19所示。然后添加两个节点,选择“图像生成”和“画板”,将“开始”节点、“图像生成”节点、“画板”节点、“结束”节点依次串联,如图4-17所示。

夏天又到了的专栏 1587

Android ScrollView嵌套ListView显示不全问题

Android ScrollView嵌套ListView显示不全问题 未嵌套ScrollView的ListView显示正常显示全 一旦嵌套了ScrollView 只显示了一行item的高度,显示不全 通过查看源码发现

Song_Tutu的博客 718

4×V100部署Qwen3.8-Flash-Next:vLLM/GGUF实战

大模型本地部署的核心,是把参数量、量化精度、显存容量和推理框架放在同一张账本里算清楚。MoE 模型总参数量大但激活参数少,解码阶段更受显存带宽与 KV Cache 限制;通过 INT4/AWQ 或 GGUF 等 4-bit 量化可显著压缩权重占用,再结合 vLLM 张量并行、llama.cpp 分层切分提升多卡利用率。其技术价值在于让 V100 这类老架构 GPU 也能承载百亿级参数模型的私有化推理,并服务于 RAG 知识库、工作流 API、批量生成等场景。这次围绕 4×V100 32G 部署 Qwen3.

weixin_29061425的博客 347

量子密钥分发系统设计与实现(一):系统基本架构讨论

本文主要对量子密钥分发系统中的基础架构和基于系统的量子密钥协商过程进行了初步讨论,为后期系列文章进行铺垫。

量子领域相关话题 3894

【Android】ScrollView 嵌套 ListView 显示不全以及最后一个item显示不全的问题

1. ListView 数据只显示一条 ScrollView 里直接嵌套 ListView 时,数据只能显示一条,通常会重写 ListView 的 onMeasure() 方法,也可以重新计算高度。 1.1 ListView 中的 item 高度固定 1.1.1 继承 ListView 重写 onMeasure() 方法 @Override protected void onMeasure(int...

DawnYu 2137

最新Python爬虫实战(入门爬虫篇)——案例7:电影网站电影数据采集(详细爬虫思路截图+抓包动图演示+完整爬虫代码+详细注释)

本次案例通过Python爬虫技术,成功实现了对某电影网站Top250多页电影详细信息的批量爬取与Excel保存。代码采用模块化设计,包含分页请求构造、XPath+正则提取结构化信息、Excel数据持久化保存等完整流程。通过配置User-Agent等请求头信息,有效模拟浏览器行为以绕过豆瓣基础反爬策略。整个爬虫逻辑遵循"分页遍历 → 请求页面 → 解析HTML → 提取电影信息 → 保存到Excel"的标准流程,与主流静态网站爬取范式高度一致。

努力让自己发光,对的人才能迎着光而来 11万+

android scrollview listview 加载更多,Android ScrollView嵌套ListView显示不全问题

Android ScrollView嵌套ListView显示不全问题未嵌套ScrollView的ListView显示正常显示全一旦嵌套了ScrollView只显示了一行item的高度,显示不全通过查看源码发现因为ScrollView和ListView的heightMeasureSpec都是MeasureSpec.UNSPECIFIED@Overrideprotected void onMeasur...

weixin_39883705的博客 213

MicroChip的SmartFusion2的M2S090芯片的全流程开发环境搭建和Demo设计

MicroChip的SmartFusion2的M2S090芯片的全流程开发环境搭建和Demo设计

qq_45806640的博客 455

手把手教你学Simulink——基于Simulink的无感FOC(滑模观测器+PLL)实战

本文详细介绍了基于Simulink的无感FOC(滑模观测器+PLL)实现方法。主要内容包括:1)SMO+PLL原理精讲,阐述滑模观测器核心思想和PLL的作用;2)系统架构全景图展示;3)Simulink建模全流程,从基础FOC框架到SMO和PLL模块的实现;4)关键参数整定指南和工程实践要点;5)仿真结果分析及常见问题解决方案。该方法可有效替代机械传感器,降低成本并提高可靠性,适用于空调压缩机、电动汽车水泵等工业场景。文章还提供了详细的调试建议和动手实践指导。

MHD0815的博客 83

解决ScrollView嵌套ListView或ListView嵌套ListView,listview显示不全的问题

方法一:适配器getview方法中调用convertView.setListViewHeightBasedOnChildren(listview);方法 /**      * 设置listview嵌套listview 引起的显示不全问题      *      * 子布局最外层必须是LinearLayout      *      * @param listView      *  

lunizhu的专栏 684

逆向工具:一文讲述 Ghidra 的详细使用

Ghidra是由NSA开源的一款功能强大的逆向工程框架,支持多平台、多架构和多种文件格式分析。本文详细介绍了Ghidra的核心优势、安装配置方法、主界面功能模块,并通过一个CrackMe示例演示了完整的逆向分析流程。文章还讲解了高级功能如交叉引用、控制流图分析、数据类型重建和脚本自动化等,最后提供了常见文件格式的分析技巧。作为IDA Pro的免费替代方案,Ghidra适合个人学习、教学和中小项目使用。(149字)

数据知道的博客 4343

ScrollView中嵌套ListView或ExpandableListView时显示不全的问题

在一个layout文件中放入当一个ListView或ExpandableListView

码农笔记 2051

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ScrollView嵌套listview时只显示一行,无法滑动,listview底部显示不全等问题

1.listview只显示一行 在ScrollView中嵌套ListView时,系统可能无法正确的计算ListView的大小,所以我们需要根据当前的ListView的列表项计算列表的尺寸。实现代码如下: public static void setListViewHeightBasedOnChildren(ListView listView) { // 获取ListView对应的...

u013166619的博客 421

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

解决ScrollView内嵌套ListView时显示不全的问题

ScrollView中嵌套listview时,listview的高度显示会有问题,比如会出现只显示一行或几行,解决方法是在设置adapter之后加上一个方法,重新计算listview的高度public void setListViewHeight(ListView mListView) { // 获取ListView对应的Adapter ListAdapter list

仙榭居 678
上一篇: 【全】Android官网MediaPlayer章节翻译与总结(下)
下一篇: 使用Tortoise SVN版本控制Eclipse工作区的Android项目时,bin编译错误
Remember2
博客等级 码龄15年 4粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值