Android ScrollView嵌套GridView导致GridView只显示一行item
Android ScrollView嵌套GridView导致GridView只显示一行item
Android ScrollView在嵌套GridView时候,会导致一个问题发生:GridView只显示一行。比如,在一个大的根ScrollView里面套一个根、大的垂直线性布局,此线性布局里面有若干子View,GridView只是其中之一,那么当这个大xml写成的布局在初始化加载后,GridView只显示一行,这种情况是因为在Android的体系设计中,由于ScrollView和GridView本身都是滚动View导致互相冲突引起。
在上述开发情景中,如果打算完全展开GridView,其中一个解决方案就是继承GridView加以改造重写GridView,然后使用这个重写的这个GridView:
package zhangphil.sample.view;import android.content.Context;
import android.util.AttributeSet;
import android.view.ViewGroup;
import android.widget.GridView;/*** Created by Phil on 2016/8/18.*/
public class ExpandableGridView extends GridView {boolean expanded = true;public boolean isExpanded() {return expanded;}public ExpandableGridView(Context context) {super(context);}public ExpandableGridView(Context context, AttributeSet attrs) {super(context, attrs);}public ExpandableGridView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}@Overridepublic void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {if (isExpanded()) {int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);super.onMeasure(widthMeasureSpec, expandSpec);ViewGroup.LayoutParams params = getLayoutParams();params.height = getMeasuredHeight();} else {super.onMeasure(widthMeasureSpec, heightMeasureSpec);}}public void setExpanded(boolean expanded) {this.expanded = expanded;}
}
在这个重写改造后的GridView里面增加了判断是否完全伸展开的状态值,可以set是否完全伸展。
如果expanded为true,那么初始化加载后就完全展开这个GridView的所有子item;
如果expanded为false,那么就退化成Android原生的GridView只显示一行。
根据自己项目的实际开发场景设置expanded的初始值为true或false,通常在开发中是希望GrdiView完全展开的,那就直接用我写好的代码就可以了。
不仅ScrollView在嵌套GridView时候会引起GridView不能展开只显示一行,实际上当ListView与GridView嵌套时候,也会引起这个问题,解决方案之一还是用我的这个重写后的GridView而非Android系统原生的GridView。
附录:
1,《Android GridView子元素item按击交互设计:背景颜色改变》链接:http://blog.csdn.net/zhangphil/article/details/46048583
转载于:https://www.cnblogs.com/hehehaha/p/6147265.html
Android ScrollView嵌套GridView导致GridView只显示一行item相关推荐
- Android Scrollview嵌套RecyclerView导致滑动卡顿问题解决(屡试不爽)
今天开发的一个项目首页,布局还是比较复杂的,各种滑动冲突,(Banner+横向RecyclerView+纵向RecyclerView(item又是横向的RecyclerView)), 最外面的框架用 ...
- Android ScrollView嵌套RecyclerView导致在三星s8曲面屏显示不全问题
当RecyclerView适配显示不全时可以单独给其嵌套一个相对布局!!!(必须是相对布局),这样在曲面屏手机就可以全部显示出来如下图所示 <RelativeLayoutandroid:layo ...
- ScrollView 里面嵌套 listview 使得listview只显示一行问题解决
2019独角兽企业重金招聘Python工程师标准>>> 方法一,最直接的方法就是删除 ScrollView控件 方法二:写个工具类动态设置listview的高度 public cla ...
- Android在ListView中嵌套一个GridView时只显示一行的原因及解决方法
在之前的编程里,我还没有遇到过要在一个ListView中嵌套一个GridView或是在一个GridView中嵌套一个ListView.所以今天事儿来了!我花了一将近3个小时,找到了为什么我在一个Lis ...
- android中ScrollView嵌套ListView或GridView显示位置问题
Android中ScrollView中嵌套ListView或GridView时在开始进入界面时总是显示中间位置,开头的位置显示不出来.这种情况下只需要在ScrollView的父控件中添加以下两行代码即 ...
- Android之解决ScrollView嵌套RecycleView导致滑动冲突或者显示不全的问题
1 问题 ScrollView嵌套RecycleView导致滑动冲突或者显示不全的问题 2 解决办法 1).ScrollView替换成普通布局,然后RecycleView用的BaseMultiItem ...
- Scrollview嵌套PreferenceFragment导致Fragment高度异常问题
Scrollview嵌套PreferenceFragment导致Fragment高度异常问题 起因 解决过程 结果 起因 为了在普通布局中嵌入多个switchpreference,自然就使用了Pref ...
- Android ScrollView嵌套ScrollView滚动的问题解决办法
引用:http://mengsina.iteye.com/blog/1707464 http://fenglog.com/article.asp?id=449 Android ScrollView嵌套 ...
- Android图片太大导致无法正常显示
Android图片太大导致无法正常显示 原因 安卓中有个内存的限制,超过这个限制后资源是无法显示的 解决办法 在全局配置文件中进行对内存的配置[关键:android:largeHeap="t ...
最新文章
- Shell特殊变量含义
- python编程基础语法-Python编程入门基础语法详解
- oracle 的float(b)转
- PHP中文件操作基础:目录操作,文件操作
- python中xml模块_python常用模块之xml模块
- 数据可视化|实验二 分析特征间关系
- 知乎问答:一年内的前端看不懂前端框架源码怎么办?
- CCS实例,网页栏目
- linux内核参数调优,缓冲区调整,tcp/udp连接管理,保持,释放优化,gossary,terms
- 计算机考研复试之计算机网络
- FreeRTOS可视化追踪软件 —— 破解Tracealyzer 4.2.12
- 三星手机使用应用沙盒动态修改sdk数据
- 【每天学点管理学】目标管理工具——SMART法则
- vue给html加背景图,Vue背景图如何全屏显示
- JustSoSo复现
- pythontext函数用法汇总_Python - Text Summarization
- 文件描述符fd和文件指针File* fp的区别和转换
- 29岁转行程序员,39岁成为总裁,宫崎英高的游戏成名之路!
- 零售行业陈列管理系统
- PHP-实现类和对象