ScrollView嵌套GridView,GridView显示不全
最近开发有个需求是以A-Z的方式区分全国城市(搜索功能),并实现字母索引的功能(有点类似微信,不过比较坑的是用的是GridView,
并且GridView上面还有几个LinearLayout)。
详细说下需求:界面的最上面有个TextView,显示“自动定位到的城市”,接着下面是当前点位到的城市;再下面是TextView(”热门城市“),
再下是GridView显示的热门城市(不按字母分模块),再下面是TextView(”所有城市“),最后就是GridView嵌套GridView显示所有城市(以A-Z分模块)。
(其实用ListView嵌套GridView是一样的)
不看文字的看图吧:

另外说下,bar下面就是一个ScrollView。热门城市这些都比较好实现,当GridView显示所有城市的时候,就显示不全了(印象中是只显示到T,XYZ等显示不出来)。
按照网上的方法各种重写GridView和ScrollView,显然还是没有效果。重写的代码如下:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
int expandSpec = MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
网上有说到,是GridView的item布局高度计算不正确,然后又是各种获取item,各种计算,结果还是不行。
没办法,上面催得紧。只能用古老的方法(勿喷)。
用LinearLayout替换第二个GridView,然后LinearLayout里面嵌套GridView,首先把获取到的所有城市按A-Z分开(非A-Z的算#,这个后面再说),通过
gridView.setAdapter和linearLayout.addView方式,终于实现了如图的效果。Item的点击事件在GridViewAdapter中添加,通过自定义接口回调点击事件。
这里说一下字母索引的功能:右边的字母控件是自定义(网上一大推)TextView,滑动或点击后有一个回调函数,将当前点击或滑动到的值回调,然后通过一个
TextView放大展示(不懂看微信)。在linearLayout.addView的时候,我把一个linearLayout的item(也就是gridView)对应的position存放到一个HashMap,
也就是key=字母,value=position。当滑动或点击时,拿到的回调参数从HashMap把position取出来,再通过linearLayout.getChildAt(position).getY()获取
到该item的Y坐标,最后通过srollView.scrollTo(0, (int)y),完美实现字母索引。
此外,汉字转拼音的功能,使用的是pinyin4j-2.5.0.jar开源库(转换的数据有一些是不准确(例如“长沙” “changsha”,被转换成“zhangsha”)),不过针对特殊的
数据可以特殊处理了。
差不多就这样子了,先去研究下重写GridView和ScrollView,依然还是显示不全的问题吧.
ScrollView嵌套GridView,GridView显示不全的更多相关文章
- RecyclerView嵌套ScrollView导致RecyclerView内容显示不全
我们在使用RecyclerView嵌套至ScrollView内的时候 RecyclerView不在屏幕内的数据会不显示出来,这里是一个坑,我们需要重写RecyclerView /** * Create ...
- ScrollView嵌套ListView只显示一行之计算的高度不正确的解决办法(转)
ScrollView嵌套ListView只显示一行之计算的高度不正确的解决办法 分类: android应用开发2013-12-19 09:40 1045人阅读 评论(3) 收藏 举报 AndroidS ...
- 一键解决ScrollView嵌套ListView仅仅显示一行的问题
/** * 解决ScrollView嵌套ListView仅仅显示一行的问题 * * @param listView */ private void setListViewHeightBasedOnCh ...
- ScrollView嵌套ListView,GridView数据加载不全问题的解决
我们大家都知道ListView,GridView加载数据项,如果数据项过多时,就会显示滚动条.ScrollView组件里面只能包含一个组件,当ScrollView里面嵌套listView,GridVi ...
- ListView嵌套GridView,显示不全解决办法
ListView嵌套GridView时,遇到了GridView只显示一行,其余都显示不出来的问题,最终解决办法如下: 需要自定义GridView,重新绘制高度即可: public class MyGr ...
- 解决Scrollview 嵌套recyclerview不能显示,高度不正常的问题
我们先看一个效果,问题说的就是中间的Grid效果在Scrollview 嵌套recyclerview显示问题,在Android Api 24是好的,不过在5,1,1版本(api 22)缺出现了问题 最 ...
- ExpandableListView使用(三)-ScrollView嵌套ExpandableListView,列表显示不全
前言 ScrollView嵌套ExpandableListView会出现ExpandableListView列表显示不全,目前比较好的方法是复写ExpandableListView,重写里面的onMe ...
- 解决ScrollView嵌套RecyclerView的显示及滑动问题
项目中时常需要实现在ScrollView中嵌入一个或多个RecyclerView.这一做法通常会导致如下几个问题 页面滑动卡顿 ScrollView高度显示不正常 RecyclerView内容 ...
- ScrollView嵌套ListView只显示一行
错误描述 ScrollView嵌套ListView中导致ListView高度计算不正确,只显示一行. 解决方法 重写ListView的onMeasure方法,代码如下. @Override publi ...
- 安卓开发ScrollView嵌套ListView只显示一行
在用列表控件做一个“更多功能”的界面的时候 <?xml version="1.0" encoding="utf-8"?> <ScrollVie ...
随机推荐
- java方法返回值的变量类型困惑
一.java program progress of excuting:show in next picture How about the java virtual machine i ...
- Xcode The identity used to sign the executable is no longer valid. 错误解决
Xcode真机调试时出现问题:Xcode The identity used to sign the executable is no longer valid. Please verify that ...
- NYOJ110 剑客决斗
剑客决斗 来源:Polish Olympiad in Informatics(波兰信息学奥林匹克竞赛) 时间限制:5000 ms | 内存限制:65535 KB 难度:5 描述 在路易十三和红 ...
- Koa2学习(八)使用session
Koa2学习(八)使用session koa2框架不提供session的处理方法,这里我们需要借助一个第三方中间件koa-session来处理session. 先安装插件: $ npm i koa-s ...
- AngularJS 指令实践指南(二)
这个系列教程的第一部分给出了AngularJS指令的基本概述,在文章的最后我们介绍了如何隔离一个指令的scope.第二部分将承接上一篇继续介绍.首先,我们会看到在使用隔离scope的情况下,如何从指令 ...
- 关于Vim的一个配置文件
昨天晚上+今天早上怒赶了一份关于Vim的自动化配置的Shell脚本,之前在github上见过一个这么一个类似的脚本项目,然后又见到同校的有一位师兄也写过这么一个类似的脚本文件,然后我也抽分跟着写一份属 ...
- inserting a large number of records with SQLiteStatement.
Below is a demo application I wrote that creates 100 records programmatically, inserts them using on ...
- Android JNI MAC OS环境配置
前言—JNI技术简介 JNI是Java Native Interface的缩写,即“Java本地调用”,它是Java世界和Native世界的中介桥梁.其中Native世界一般指C/C++的世界.众所周 ...
- I.MX6 MAC Address 导致的系统崩溃
/**************************************************************************** * I.MX6 MAC Address 导致 ...
- BZOJ_1511_[POI2006]OKR-Periods of Words_KMP
BZOJ_1511_[POI2006]OKR-Periods of Words_KMP Description 一个串是有限个小写字符的序列,特别的,一个空序列也可以是一个串. 一个串P是串A的前缀, ...