ListView 里面嵌套 GridView 遇到的问题及其解决方法。
我们直接入主题。所有问题例子请参照下图
1,怎样使图片具有点击事件?
答:
解决方法:
在你的BaseAdapter里面不要设置下面这三个东西,然后再设置GridView的onItemClick。
gridView.setClickable(false);
gridView.setPressed(false);
gridView.setEnabled(false);
2,为什么我在已经处理了listView点击事件阻断的情况下,同时图片具有点击事件,此时再点击和图片同高度的空白处,却无法执行listView的item点击事件,点击其它非同高度地方,例如点击文字却可以。
答:
原因:
GridView 格子中的View 有点击事件,证明你没阻断,之所以点击和图片同高度的空白处没有执行 listView 的点击事件是你的GridView 霸占了整行,即使你的格子只有一个,验证我这句话就是给GridView 设置个背景,若非如此请留言,我帮你 fix。
解决方法:
动态给你的 GridView 设置宽度,不要使用 Wrap_Parent 等.
3,如何动态地给嵌套在Listview 里面的 GridView 设置宽、高度?
答:
解决方法:
GridView 没有setWidth() 等操作,你必须使用 setLayoutParams() 来搞定。
4,为什么我给 GridView 设置了setLayoutParams() 后被抛出强转类型失败异常,程序崩溃?
答:
原因/解决方法:
如果你的 GridView 是某个View 的子 View,例如你使用 LinearLayout 包裹 GridView,那么你的GridView要设置的 setLayoutParams() 所传入的 LayoutParams 必须要是LinearLayout。即是
ViewGroup.LayoutParams linearParams =newLinearLayout.LayoutParams((70,70);
gridView.setLayoutParams(linearParams); 否则抛出异常。
5,为什么我动态设置了 GridView 的宽度后,发现 格子 有错位、重叠、间隙太大、很丑很没幸福感的现象?
答:
原因:
宽度、间隙太大--你的 GridView 如果使用默认的排版方式,即是如果你是没有设置 gridView.setStretchMode(GridView.NO_STRETCH); 的话,那么它就是把宽度平均分来显示每个格子的,这样会造成。解决方法是设置GridView.NO_STRETCH,然后是自定义格子宽度和间隙。或者设置好 GridView的宽度。
重叠、遮挡的现象--如果你设置了GridView.NO_STRETCH,那么就可能会出现重叠、遮挡的现象,解决方法是动态测量设备宽度再使用等比例来设置理想格子宽度,既不影响格子的点击,又能相应 ListView 的Item 点击,例如:
int myWidth = 80; // 这个值是你的显示图片的宽度,例如我的ImageView,我设置了它宽为80dp,那么就是80
int distance = 3;//这个是每个格子之间的 间隙
int userPhoneWidth = 设备的宽度; // 自己使用代码获取
int myPhoneWith = 1080 ; // 这个是你测试的设备的宽度,我的是1080
公式计算,先声明下,上面4个值一旦确定了就适用于所有设备,因为采用的是等比缩放,也测试过。
(其他手机的理想格子宽度)/userPhoneWidth = myWidth/myPhoneWith,简单化简后:
理想格子宽度 = userPhoneWidth * myWidth / myPhoneWith
gridView.setHorizontalSpacing((userPhoneWidth+3) * 最大格子数 * myWidth / myPhoneWith); //采用GridView.NO_STRETCH 后设置间距
6,为什么我 点击文字下面的部分 无法执行 listView 的 item 点击事件?
答:典型的事件阻断,针对这种的解决方法,百度上面大把解决方法。我这里不罗嗦。
最终,我项目的 ListView 嵌套 GridView 后的效果是满足上述所有想要的效果。
ListView 里面嵌套 GridView 遇到的问题及其解决方法。的更多相关文章
- android 之 ListView 里面嵌套 GridView 遇到的问题及其解决方法。
我们直接入主题.所有问题例子请参照下图 1,怎样使图片具有点击事件? 答: 解决方法: 在你的BaseAdapter里面不要设置下面这三个东西,然后再设置GridView的onItemClick. g ...
- ListView中嵌套GridView点击事件
做一个项目时,需要在ListView中嵌套GridView,因为ListView的每个条目中不一定出现GridView,那么问题来了,添加GridView的Item的点击事件后,有GridView出现 ...
- Android 中 ListView Adapter getView 被多次调用问题 解决方法
执行多次原因是因为每显示一个VIew,它都去测量view的高度,执行measure方法,导致getView执行多次. 解决方法是将 ListView 的 layout_width 设置为 fill_p ...
- ListView中的Item不能点击的解决方法
有时,为了实现某种功能,在Android程序中会考虑在ListView的每一个Item中添加一个Button(或ImageButton等). 但是,这样会出现一个问题: 当同时设置了Button的on ...
- 关于vue的多页面标签功能,对于嵌套router-view缓存的最终无奈解决方法
最近写我自己的后台开发框架,要弄一个多页面标签功能,之前有试过vue-element-admin的多页面,以为很完美,就按它的思路重新写了一个,但发现还是有问题的. vue-element-admin ...
- asp.net中listview下嵌套gridview
最近在上软件工程实践课程,想做一个类似于QQ空间或者朋友圈一样的效果.即显示所有好友发送的动态以及动态下回复的信息. 自己YY了一种方法,一开始以为不能达到效果,研究了2个小时终于实现了,感觉效果还是 ...
- ListView 中嵌套 GridView
1.主布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andr ...
- Android ListView的item点击无响应的解决方法
假设listitem里面包含button或者checkbox等控件,默认情况下listitem会失去焦点,导致无法响应item的事件,最经常使用的解决的方法 是在listitem的布局文件里设置des ...
- android listView嵌套gridview的使用心得
在开发的过程中可能需要用到listview嵌套gridview的场景,但是在Android中, 不能在一个拥有Scrollbar的组件中嵌入另一个拥有Scrollbar的组件,因为这不科学,会混淆滑动 ...
随机推荐
- android部分开发摘要
Async 异步 不会阻塞当前线程sync 同步 数据库是应用软件|结构化数据存储 JDBC SQL ellipsis 省略 content provider URI thread--lo ...
- linux系统下who&who am i与whoami的区别,以及与select * from dba_users的区别
who am i :表示登录此虚拟机(或者计算机)时,使用的操作系统级别用户名称 whoami:表示当前正在使用的操作系统级别用户名称 select username from dba_users;查 ...
- navicat cannot create file 文件名、目录名或卷标语法不正确 解决方法
配置了mycat,用navicat连接8066端口,点击“查询”的时候发现出现报错: 开始以为是mycat的配置有问题,找了好久都没发现错误.根据提示信息进入到相应的目录发现每个连接其实就是一个win ...
- 【BZOJ 4455】【UOJ #185】【ZJOI 2016】小星星
http://www.lydsy.com/JudgeOnline/problem.php?id=4455 http://uoj.ac/problem/185 有一个$O(n^n)$的暴力,放宽限制可以 ...
- 区间DP lightoj 1422
t个样例 n n个数字 从 1->n 穿衣服 脱了就不能再用 ,可以套 问最少几件衣服 #include<stdio.h> #include<string.h> # ...
- HTML5前端(移动端网站)性能优化指南
HTML5是一种最新发布网页构架的普遍模型,是构建对程序.对用户都更有价值的数据驱动的Web的前端技术框架,它的价值在于融合CSS/javaScript/flash等众多前端开发技术,更多的体现在对交 ...
- 让Chrome支持Ajax/$http方式读取本地文件
在开发中经常写些小demo调试一下插件什么的 数据源又经常手动构造分离为一个单独的文件.用ajax或$http去访问时总是拒绝访问.这个时候可以给Chrome的快捷图标加启动参数,让浏览器允许js访问 ...
- servlet监听器Listener(理论+例子)
Listener采用了观察者模式(24种模式之一),Listener是servlet的监听器,他可以监听客户端的请求.服务器端的操作等, 通过监听器,可以自动激发一些操作.比如:监听在线用户数量 当增 ...
- Java中Comparable和Comparator区别小结
一.Comparable简介 Comparable是排序接口.若一个类实现了Comparable接口,就意味着该类支持排序.实现了Comparable接口的类的对象的列表或数组可以通过Collecti ...
- Value和Object的区别
在使用NSMutableDictionary的时候经常会使用setValue forKey与setObject forKey,他们经常是可以交互使用的,代码中经常每一种的使用都有. 1,先看看setV ...