Android ScrollView + ListView嵌套使用

17.Android ScrollView嵌套ListView 技巧 == 需求所致 巧妙避免 解决方案一 手动设置ListView高度 解决方案二 一个ListView渲染整个ScrollView内容 解决方案三 自定义LinearLayout取代ListView 解决方案四 自定义拓展ListView 对比总结需求所致现在的需求中,一个简单的列表已经不能满足产品的设计。往往都是在一个View中会有许多控件,ListView又包含在其中。我们都知道,这样的页面肯定是 阅读详情

首先需要自定义ListView

public class MyListView extends ListView {
    public MyListView(Context context) {
        super(context);
    }

    public MyListView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyListView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public MyListView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }
    /**
     *重写该方法,达到使ListView适应ScrollView的效果
     */
    @Override
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int mExpandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, mExpandSpec);
    }

}

 布局文件

<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:fillViewport="true"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:orientation="vertical"
        android:focusableInTouchMode="true"
        android:focusable="true"
        android:descendantFocusability="beforeDescendants"

        android:layout_height="match_parent">
        <LinearLayout
            android:layout_width="match_parent"
            android:background="@color/gray_background"
            android:orientation="horizontal"
            android:gravity="center_vertical"
            android:layout_gravity="center_vertical"
            android:layout_marginStart="5dp"
            android:layout_marginEnd="5dp"
            android:layout_height="40dp">
            <TextView
                android:layout_width="wrap_content"
                android:text="品名:"
                android:gravity="center_vertical"
                android:textColor="@color/gray_font"
                android:layout_height="match_parent" />
            <TextView
                android:layout_width="wrap_content"
                android:text="规格"
                android:textColor="@color/gray_font"
                android:gravity="center_vertical"
                android:layout_height="match_parent" />
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:src="@drawable/dropdown_gray"
                />
        </LinearLayout>
        <MyListView
            android:id="@+id/listview"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        </MyListView>
    </LinearLayout>
</ScrollView>

 其中  android:fillViewport="true" 让listview 填充屏幕

而下面这3行,是防止自动跳转到listview的第一行

    android:focusableInTouchMode="true"
        android:focusable="true"
        android:descendantFocusability="beforeDescendants"

Android ScrollView与ListView一起(嵌套)使用解决ListView自动滚动的几点方案 说明:很多ScrollView与ListView一起使用过的人都应该知道,到ScrollView嵌套ListView时ListView会自动加滚动,大概只能显示两个Item的高度,很是让人头疼。但是Android貌似并不提倡这两者一起使用,详情请看Android开发文档。   接下来说一下解决方案: 1、最简单的一种:指定ListView的高度,即android:layout_height='48 阅读详情

相关推荐

ScrollView 里面 嵌套ListView 导致listview无法完全显示数据的问题

相信大家做Android的,一定会碰到这么一个问题,ScrollView 里面 嵌套ListView怎么整?之前我是直接放弃ScrollView 。后来的后来,项目需求必须这么玩。。(醉了)。在网上找了跟多例子,这里先介绍几个不能实现的例子吧。(起码我没成功。。。) 1.直接在ScrollView的xml文件里加上android:fillViewport="true" 这个属性。 ...

木木小黑 1548

android开发中使用scrollView嵌套Listview

在公司做钱眼这个app时,其中有一个界面比较复杂,上边需要显示很多的数据,下边还有一个列表。如下图。 (公司产品尚未上线,因此用了一个同类型app的界面了)。当我看到这个美工切图以后,我自然反应使用一个listview实现所有逻辑,事实上我已经实现了。在【热帖、新贴、新闻、公告、球友】上边相当于head,之下的都市listview的item。虽然实现了,但是感觉代码比较乱。也在网上找了一些资料,发

hunan_lijie_的专栏 935

Android开发中ScrollView嵌套ListView的解决方案汇总

定义了子控件如何向父容器请求滚动的能力。:定义了父容器如何响应子控件的滚动请求。当子控件(如)开始滚动时,它会通过方法向父容器(如)申请滚动权限。父容器在收到申请后,可以决定是否参与滚动事件的处理,并通过和方法与子控件进行协调。<TextViewandroid:text="欢迎来到我的页面"<ImageView<TextViewandroid:text="数据项内容"@Override@Override@Override@Override。

weixin_29050829的博客 1241

android ScrollView嵌套ListView

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

u010152805的专栏 2131

Android开发中的ScrollView嵌套ListView实战指南

在Android开发中,ScrollView和ListView是两种常用的视图组件,分别用于处理滚动内容和列表数据。ScrollView为单一滚动视图提供了支持,能够展示超出屏幕范围的视图内容,而ListView则针对列表形式的数据展示优化,允许用户上下滚动浏览多项数据。尽管两者各有所长,但在实际开发中,开发者常常会遇到需要将ListView嵌入ScrollView中的场景,希望能够在单个屏幕内展现更多的列表项。

weixin_28931507的博客 898

全志D1s RISC-V开发板硬件设计与Linux启动全流程解析

RISC-V架构是当前国产嵌入式处理器演进的核心方向,其启动流程涵盖从BootROM、SPL到U-Boot及Linux内核的多级引导机制。理解该流程需掌握DDR初始化、设备树适配、电源时序控制等底层原理,技术价值在于构建可追溯、可调试、可量产的最小可行系统(MVS)。典型应用场景包括边缘AI推理终端、工业HMI和轻量级网关等对成本与开源性敏感的领域。本文以全志D1s平台为载体,深入剖析基于玄铁C906内核的RISC-V SoC在真实硬件上的启动验证、电源完整性设计与Linux全链路开源实践。

weixin_32306683的博客 359

Android中ListView与ScrollView混合使用

ListView与ScrollView混合使用主要有两种效果: 1、ListView在ScrollView中高度固定。滑动ListView时,ListView滚动。ListView到头或者滑动ScrollView时整个页面滚动。 listView.setOnTouchListener(new View.OnTouchListener() { @Override

小旭的专栏 6058

手把手拆解固态电池成本:2030年真能比液态电池便宜30%吗?

本文深度解析固态电池成本结构,探讨2030年实现比液态电池便宜30%的可行性路径。通过拆解正极材料、负极材料和固态电解质的成本演变,分析关键技术对降本的影响,并预测产业链协同效应下的成本优化趋势。文章指出,在材料创新、设备国产化和政策支持等多重因素推动下,固态电池有望在2030年实现显著降本目标。

kite3的博客 404

Android--ScrollView中嵌套使用ListView

前几天由于需要,需要在一个垂直的ScrollView添加一个相同方向的ListView,但是默认的情况下是不行的,ListView会显示不完全。 后来在博客中找到了一种解决办法简便而有方便的操作,就是在ListView中的每个子项重新计算ListView的高度,再把高度作为LayoutParams中。下面简述这种方法的实现:1.创建自定义的ListView这里的ListViewInScrollVi

NoClay's Home 620

UE5实战:如何用Georeference插件搞定百度地图坐标转换(附完整代码)

本文详细解析了在UE5中使用Georeference插件实现百度地图坐标转换的全流程,包括BD-09到UE内部坐标的转换算法、UTM投影配置及性能优化技巧。通过完整代码示例和实战案例,帮助开发者高效解决数字孪生项目中的地理坐标转换难题。

weixin_30955617的博客 94

Colmap参数调优实战:如何通过5个关键设置提升3D重建精度

本文深入探讨Colmap参数调优实战,通过5个关键设置显著提升3D重建精度。重点解析特征匹配参数、BA优化配置、初始化策略、资源分配及动态调整方法,结合量化数据和实际案例,帮助开发者精准优化重建流程,适用于古建筑扫描、无人机航拍等多种场景。

weixin_30872157的博客 432

Android开发笔记之 RecyclerView和ScrollView嵌套使用,ListView和ScrollView嵌套使用对比

直接上代码:    1、 Activity的代码:public class MainActivity extends AppCompatActivity { private List&lt;String&gt; list; @Override protected void onCreate(Bundle savedInstanceState) { supe...

奋斗路上的文艺女青年的博客 1048

【从零开始学Skynet】基础篇(一):Skynet环境搭建

Skynet运行于Linux操作系统,我们可以在自己的电脑上搭建虚拟机系统,也可以购买阿里云、腾讯云服务器,笔者这个系列的所有代码都是在Ubuntu16.04版本的虚拟机系统下运行编辑。

我是一条寻水的鱼 3167

Android中ScrollView和ListView嵌套使用时,进入界面不是从起始位置也即是不是从顶部显示问题

ScrollView和ListView嵌套使用时,解决了两者的冲突,进入界面不是从起始位置也即是不是从顶部显示 解决办法是:listview.setFocusable(false); 网上有人说使用下面两个方法: mScrollView.smoothScrollTo(0, 0); 或者 mScrollView.scrollTo(0, 0); 但是经过测试是没有用

qq_35821446的博客 419

【软件系统架构】系列四:嵌入式技术

嵌入式系统是以应用为中心、以计算机技术为基础,并将可配置与可裁剪的软硬件集成于一体的专用计算机系统。它需要满足功能、可靠性、成本、体积、功耗等方面的严格要求。 嵌入式系统一般由以下组成部分构成:

moton2017的博客 1000

深度解析:C# Modbus TCP协议解析与异常处理(工控上位机必备)

协议解析要精准:掌握MBAP头和PDU的结构,尤其是常用功能码的请求/响应格式,避免因字节处理错误导致通信失败;异常处理要全面:覆盖通信层、协议层、数据层的所有异常类型,针对工业场景制定重试、重连、滤波等策略;资源管理要规范:使用释放资源,采用连接池复用连接,避免端口泄露;工业场景要适配:结合工控现场的特点(网络波动、电磁干扰、设备忙),优化通信效率和数据处理逻辑。通过以上解析和策略,可确保C#上位机与工业设备的Modbus TCP通信具备高稳定性、高可靠性、高容错性,满足工控领域的严苛要求。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 997

Android 遇坑【2】 - ScrollView 嵌套 ListView 时ListView数据显示不全

ScrollView 嵌套 ListView时,Android 会无法正确的计算 ListView 的大小。 因而提供两种 解决方法 : layout文件 中去掉嵌套 计算 listView 高度 private void fixListViewHeight(ListView listView) { int totalHeight = 0; ...

Hsy的博客 593

手把手教你完成基于YOLOv8的水果/商品/食堂/蔬菜/饮料/书籍识别与计价系统,前台+后台管理系统

手把手教你完成基于YOLOv8的商店的水果/商品/食堂/蔬菜/饮料/书籍识别与计价系统,前台+后台管理员系统,可进行目标检测的操作和展示,实现对图片、视频和摄像头的实时目标检测

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 2457

【Android】ScrollView嵌套Listview源码分析

从源码的角度分析Scrollview嵌套Listview显示一行问题,主要关注ScrollView和ListView的Measure过程, 1、ScrollView的OnMeasure()方法 super.onMeasure(widthMeasureSpec, heightMeasureSpec); if (!mFillViewport) { return; } final int heightMode = MeasureSpec.getMode(heightMeasureSpec); if (

sinat_36955332的博客 188

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Android中ListView和ScrollView总结

快速滚动的解决问题:   http://www.2cto.com/kf/201111/112399.html     众说纷纭:ScrollView中包含ListView http://www.cnblogs.com/LuoYer/archive/2011/05/07/2039884.html

justwyy的专栏 146

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ListView的addHeaderView(),ScrollView嵌套ListView和GridView只显示一行。

addHeaderView()一、使用addHeaderView(View view)方法给ListView添加Header,添加之后Header占据了ListView的第一项,因此item的点击事件的position需要-1。二、重写ListViewpublic class MyListView extends ListView { public MyListView(Context conte

wwl0115的博客 575

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

在ScrollView中嵌套ListView的导致ListView只显示一两行

如题,在项目中嵌套使用导致ListView显示不全。这是由于这两个控件都是滑动组件,所以可能导致高度没办法绘制,所以解决办法为:直接自己定义一个ListView. public class MyListView extends ListView {         public MyListView(Context context) {                 super(c

李文杰的博客 492

ScrollView和ListView两个View都有滚动的效果

只需要将你要listview传入该方法中即可解决滚动不叠加 /** * 重新计算ListView的高度,解决ScrollView和ListView两个View都有滚动的效果,在嵌套使用时起冲突的问题 * @param listView */ public void setListViewHeight(ListView listView) { // 获取ListView

果冻都烂了的博客 467

解决ScrollView中嵌套ListView滚动效果冲突问题

在ScrollView中嵌套使用ListView,ListView只会显示一行到两行的数据。起初我以为是样式的问题,一直在对XML文件的样 式进行尝试性设置,但始终得不到想要的效果。后来在网上查了查,ScrollView和ListView两个View都有滚动的效果,在嵌套使用时起了冲 突,一般不建议两者套用。 下面说说具体解决方案。方案的主要思路就是根据ListView子项重置其高度。...

weixin_30437847的博客 154

android ScrollView嵌套ListView

Android之ScrollView嵌套ListView 问题所在:在ScrollView中嵌套使用ListView,ListView只会显示一行多一点 -------------------------------------------------------------------------------------------------- 解决方案:  这里我贴出了核心代码 p

hjw634914610的专栏 791

Android中在ScrollView中显示ListView

在以前一个项目中碰到这么一个需求,要将一个ListView嵌套在一个外部ScrollView当中,试了后发现,ListView的高度出了问题,始终只显示一点,并且滑动也有问题,Android默认是禁止将ListView潜逃在ScrollView里面的,虽然这种设计不被推崇,但是后来到Stackoverflow上找到了一个解决方法,那就是在为ListView设置Adapter后,重新计算子item的

Ryan's zone 3045
上一篇: MySQL connector/C++ 使用静态链接库的问题
下一篇: WPF中ListView排序实现(2022.12.25有更新)
Falcon2000
博客等级 码龄26年 2粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值