android 关于 ScrollView嵌套GridView,ListView 显示和滑动的问题

scrollview嵌套listview 嵌套HorizontalScrollView嵌套gridview 焦点及卡顿问题 最近项目中用到了scrollview嵌套listview 嵌套HorizontalScrollView嵌套gridview设计,废了九牛二虎之力写好之后就出现各种问题:首先是横向gridview滑动的时候不流畅,卡顿现象。其次是横向gridview滑动之后造成上下滑动异常现象。我的思路是滑动卡顿可能是由于gridview滑动是不断重建造成的,虽然有viewholder缓存在某些手机上还是有不明显的 阅读详情

ScrollView GridView ListView 都有上下滑动的响应函数,所以嵌套在一起的话,里面那一层就监听不到滑动的响应。

如果不处理的话,GridView 和 ListView 在ScrollView中只会显示一部分高度,这样看起来不是很郁闷?


在特殊的情况下,我们需要嵌套起来使用才能符合界面的设计.

SO 在网上找了一些时间后,发现解决办法还是有的,一下是我个人觉得简单,易用,缺点不多的一种方法:

自定义一个类 继承GridView或者ListView,重写其中的 onMeasure 方法、、


onMeasure方法是在这个View构造的时候确定它的长度和宽度的方法。

我们重写的时候,要把滚动条设置为没有滚动条,Gridview就会按照有多少行,就显示多少行

废话少说,上代码

[html]  view plain copy
  1. public class MyGridView extends GridView {
  2. private boolean haveScrollbar = true;
  3. public MyGridView(Context context) {
  4. super(context);
  5. }
  6. public MyGridView(Context context, AttributeSet attrs) {
  7. super(context, attrs);
  8. }
  9. public MyGridView(Context context, AttributeSet attrs, int defStyle) {
  10. super(context, attrs, defStyle);
  11. }
  12. /**
  13. * 设置是否有ScrollBar,当要在ScollView中显示时,应当设置为false。 默认为 true
  14. *
  15. * @param haveScrollbars
  16. */
  17. public void setHaveScrollbar(boolean haveScrollbar) {
  18. this.haveScrollbar = haveScrollbar;
  19. }
  20. @Override
  21. protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
  22. if (haveScrollbars == false) {
  23. int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
  24. super.onMeasure(widthMeasureSpec, expandSpec);
  25. } else {
  26. super.onMeasure(widthMeasureSpec, heightMeasureSpec);
  27. }
  28. }
  29. }
[html]  view plain copy
  1. public class MyGridView extends GridView {  
  2.   
  3.     private boolean haveScrollbar = true;  
  4.   
  5.     public MyGridView(Context context) {  
  6.         super(context);  
  7.     }  
  8.   
  9.     public MyGridView(Context context, AttributeSet attrs) {  
  10.         super(context, attrs);  
  11.     }  
  12.   
  13.     public MyGridView(Context context, AttributeSet attrs, int defStyle) {  
  14.         super(context, attrs, defStyle);  
  15.     }  
  16.   
  17.     /**  
  18.      * 设置是否有ScrollBar,当要在ScollView中显示时,应当设置为false。 默认为 true  
  19.      *   
  20.      * @param haveScrollbars  
  21.      */  
  22.     public void setHaveScrollbar(boolean haveScrollbar) {  
  23.         this.haveScrollbar = haveScrollbar;  
  24.     }  
  25.   
  26.     @Override  
  27.     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {  
  28.         if (haveScrollbars == false) {  
  29.             int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);  
  30.             super.onMeasure(widthMeasureSpec, expandSpec);  
  31.         } else {  
  32.             super.onMeasure(widthMeasureSpec, heightMeasureSpec);  
  33.         }  
  34.     }  
  35. }  

在xml中这么定义:

[html]  view plain copy
  1. <com.erp.android.control.NDGridView
  2. android:id="@+id/myGrideView"
  3. android:layout_width="fill_parent"
  4. android:layout_height="wrap_content"
  5. android:layout_gravity="center"
  6. android:columnWidth="100dp"
  7. android:gravity="center"
  8. android:numColumns="auto_fit" >
  9. </com.erp.android.control.MyGridView>
[html]  view plain copy
  1. <com.erp.android.control.NDGridView  
  2.     android:id="@+id/myGrideView"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="wrap_content"  
  5.     android:layout_gravity="center"  
  6.     android:columnWidth="100dp"  
  7.     android:gravity="center"  
  8.     android:numColumns="auto_fit" >  
  9. </com.erp.android.control.MyGridView>  


重写就重写了这一个地方,我认为的缺点就是设置之后不能上下滑动了,不过有ScrollView 可以代替这一功能

横向滑动的listview效果的实现方法,scrollview嵌套水平滑动的listview卡顿的解决方法 很多时候,界面需要实现横向滑动的listview效果。网络上有一种方法,自定义了HorizontalListView,用法同正常的listview,可实现水平滑动效果。 但是如果一个界面 为垂直滑动的scrollview嵌套水平滑动的listview的时候,滑动水平listview的时候,会很卡。我最近就遇到了这样的问题,一直把思路放在监听水平和垂直滑动手势,想实现滑动角度小于45的时候 垂直的 阅读详情

相关推荐

ScrollView嵌套GridView的滚动事件解决

今天在项目中遇到一个ScrollView嵌套GridView的情况,由于这两款控件都自带滚动条,外层的ScrollView会对滚动事件进行拦截,就会存在GridView会显示不全。  解决办法,继承GridView控件,重写onMeasure方法,使其不会出现滚动条,ScrollView嵌套ListView也是同样的道理:修改如下 /** * 类描述:自定义一个GridV

Alostz 5647

Android 7.0手机HorizontalScrollView嵌套RecyclerView展示不完全问题

项目中有个HorizontalScrollView嵌套RecycleView的列表在华为荣耀8(android7.0系统)上展示不完全(横向滑动展示不完全) 解决方法如下: 在RecycleView外层嵌套一个RelativeLayout里面添加 android:descendantFocusability=”blocksDescendants”这个属性即可 代码如下:

lnny的博客 2782

UQLab——其他概率分布随机变量转换标准Gaussian分布

1、使用UQLab将其他类型的随机变量转换成标准Gaussian分布; 2、使用科学计数法输出样本,方便后续ANSYS的调用分析; 3、基于MC的可靠度分析。 原随机变量分布类型: % 调用UQLab进行采样 clc clear uqlab %% Specify these distributions as a UQLab INPUT object: PriorOpts.Marginals(1...

ikhui7的博客 3013

Android ScrollView中嵌套ListView和GridView显示不全解决方案以及自定义ListView和GridView时出现的滑动问题

报错的代码: requestLayout() improperly called by android.widget.GridView 首先,网上并没有真正的解决方案,妈的坑爹! 其次,经过反复定位 排查问题给出大家解决方案! 最后: 在你的ScrollView内的唯一子View,这里是LinearLaout中添加 android:descendantFocusability="b...

蒙奇奇有大大的梦想 474

量子通信:初识量子城域网

对量子城域网的概念、作用、拓扑、建设内容等进行了较为全面的初步介绍。

量子领域相关话题 3347

基于STM32的简易电压、频率、占空比测量仪

任务详解:我们需要实现三个功能: 第一个是测频率的功能,输入信号为频率为1kHz~10kHz的三种波形(方波、三角波、正弦波),这也是我们最常见的三种波形。幅度是不需要测量的,所以先不关心幅度。 第二个是电压报警功能,当输入信号的幅度超过15V时,我们需要报警(这里我用了一个红色LED当报警器,有条件的还可以加个蜂鸣器)并且把此时的信号幅度显示在OLED屏幕上。 第三个是通信方式的要求,需要有串口通信功能。 第四个是计算占空比的任务,这个任务的输入是幅度为1V~10V、频率为20Hz ~1kHz的方波,需要

weixin_43469377的博客 7251

ScrollView 与 ListView 以及 GridView 滑动冲突完美解决

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34176694的博客 287

SPSS与SPSS Modeler,不一样的世界

1. SPSS软件的前世今生 1.1 IBM SPSS的由来 与数据打过交道的小伙伴们,应该对SPSS软件都不陌生。SPSS是世界上最早的统计分析软件,由斯坦福大学的三个研究生大牛于1968年研发,同时还成立了SPSS公司。SPSS最初的全称是Solutions Statistical Package for the Social Sciences(社会科学统计软件包),随着SPSS产品服务领...

qq_24339451的博客 3613

Tips_Android中ScrollView嵌套Listview或Gridview(ZZ)

为什么80%的码农都做不了架构师?>>> ...

weixin_33877092的博客 121

传感器应用案例:压力传感器在工业自动化中的应用_(13).压力传感器的数据采集与处理

数据采集系统(Data Acquisition System, DAS)是连接传感器和控制系统的重要桥梁。它包括硬件(如数据采集卡、信号调理器)和软件(如数据采集软件、数据处理算法)两部分。信号调理:将传感器输出的模拟信号转换为适合AD转换的信号。AD转换:将模拟信号转换为数字信号。数据传输:将数字信号传输到控制系统或上位机。存储:将采集的数据存储在本地或远程数据库中。实时性:保证数据的实时性和准确性。压力传感器的数据采集与处理是工业自动化中不可或缺的一部分。

2401_87715305的博客 1620

手把手教你学Simulink——四开关 Buck‑Boost(FSBB)变换器的无缝模式切换仿真

本文详细介绍了四开关Buck-Boost(FSBB)变换器的Simulink仿真方法,重点解决模式切换时的直通风险和输出电压波动问题。通过统一电压PI控制、迟滞比较模式仲裁(Buck/Boost/Pass-Through)和200ns死区设计,实现了Vin从26V到22V变化时Vout稳定在12V±0.15V。关键步骤包括:搭建功率级电路、Stateflow模式判断、PI控制器输出占空比映射(Buck模式D≈Vo/Vin,Boost模式D≈1-Vo/Vin),以及带死区的PWM信号分配。仿真验证了切换过程中

MHD0815的博客 115

ScrollView中嵌套GridView,Listview的办法

按照android的标准,ScrollView中是不能嵌套具有滑动特性的View的,但是有时如果设计真的有这样做的需要,或者为了更方便简单的实现外观(比如在外在的大布局需要有滑动的特性,并且内部有类似于List的UI结构,那么ListView + Adpater的方式来实现里面的效果就很方便,算是违规抄近道的一种方式吧),有时就会不得不采用这种怪异的组合方式。 先说下这种方式

chenzhenlindx的专栏 658

软件测试面试题之易错题

(1)白盒测试:又称功能功能 测试、数据驱动测试和行为测试,是一种从用户观点出发的测试,被测程序为黑盒子, 通过测试来检测每个功能是否能够正常使用。(2)黑盒测试:又称结构测试和逻辑驱动 测试,是知道产品内部工作过程,通过测试来检测产品内部动作是否按照规格说明书 的规定去正常运行。(1)、测试需求分析;(2)动态白盒测试:需要对各个模块功能、模块间的接口、局部数据结构、主要执行路径、 错误处理等方面的测试。(2) 集成测试所测试的对象是模块间的接口,其目的是在找出在模块接口上面,包括整体体系结构上的问题;

m0_37449634的博客 678

androidUI(ScrollView与GridView,ListView的冲突)

问题: android开发时候需要ScrollView嵌套时候GridView,ListView只剩下一行显示。 滑动事件冲突 解决方案: 自定义 ListView,GridView,不生成滑动条。 具体如下: 1、自定义View继承GridView。 2、重写onMeasure方法,不生成滑动。 public class MyGridView ex

android小菜 640

IgH EtherCAT 从入门到精通:第 29 章 实战:EoE 远程维护通道搭建

摘要:本章详细介绍了基于EoE(Ethernet over EtherCAT)协议的远程维护通道搭建方案。主要内容包括:1)网络架构设计,采用管理网络与EoE子网隔离的方案;2)从站EoE支持确认与IP地址配置,提供API和命令行两种方式;3)路由/交换两种部署模式,重点推荐路由模式并给出自动化配置脚本;4)SSH远程访问配置,包括直接连接和跳板访问两种方式;5)安全加固措施,如防火墙规则、SSH密钥认证等;6)故障恢复机制与性能注意事项。该方案实现了通过EtherCAT网络对从站设备的远程SSH访问、文件

从事嵌入式linux android驱动开发,拥有全栈能力 360

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

关于ScrollView嵌套ListView和GridView最常见的两种问题

在Android开发中ListView和GridView、RecyclerView的使用是不可避免的,但是这些控件又只能以列表的形式来展示,这样就有很大的局限性,好在Android提供了ScrllView来进行多空间组合,实现滑动的效果,说以ScrllView嵌套这些布局已经不可避免。 同样是滑动界面,这样就会出现冲突,今天就来说说ScrllView嵌套这些布局最经常需要解决的问题; 1、Sc

zyw3411的博客 332

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

android开发常见bug及解决方案汇总

一、滑动冲突 1、ScrollView和ViewPager public class CustomScrollView extends ScrollView { private float xDistance, yDistance, xLast, yLast; public CustomScrollView(Context context) { super(

tgzzl的专栏 1216

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

如何在ScrollView中嵌套ListView和GridView

public void setListViewHeightBasedOnChildren(GridView listView) { ListAdapter listAdapter = listView.getAdapter(); int lineNum = 3; //GridView 每行的个数 if (listAdapter == nul

努力后才会有收获....加油! 2149

ScrollView嵌套GridView、ListView的那些事儿

尊重他人的劳动成果,转载请标明出处:http://blog.csdn.net/gengqiquan/article/details/53782194, 本文出自:【gengqiquan的博客】在android开发中,经常有一些UI需要进行固定style的动态布局,然而由于现在的UI都喜欢把一个界面拉的很长,所以我们很多情况下需要使用ScrollView来嵌套列表控件来实现UI。这样就导致了很多不顺心

gengqiquan的博客 4210
上一篇: 自定义的折线图
下一篇: android获得屏幕高度和宽度
killcwd
博客等级 码龄16年 49粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值