我们直接入主题。所有问题例子请参照下图

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 遇到的问题及其解决方法。的更多相关文章

  1. android 之 ListView 里面嵌套 GridView 遇到的问题及其解决方法。

    我们直接入主题.所有问题例子请参照下图 1,怎样使图片具有点击事件? 答: 解决方法: 在你的BaseAdapter里面不要设置下面这三个东西,然后再设置GridView的onItemClick. g ...

  2. ListView中嵌套GridView点击事件

    做一个项目时,需要在ListView中嵌套GridView,因为ListView的每个条目中不一定出现GridView,那么问题来了,添加GridView的Item的点击事件后,有GridView出现 ...

  3. Android 中 ListView Adapter getView 被多次调用问题 解决方法

    执行多次原因是因为每显示一个VIew,它都去测量view的高度,执行measure方法,导致getView执行多次. 解决方法是将 ListView 的 layout_width 设置为 fill_p ...

  4. ListView中的Item不能点击的解决方法

    有时,为了实现某种功能,在Android程序中会考虑在ListView的每一个Item中添加一个Button(或ImageButton等). 但是,这样会出现一个问题: 当同时设置了Button的on ...

  5. 关于vue的多页面标签功能,对于嵌套router-view缓存的最终无奈解决方法

    最近写我自己的后台开发框架,要弄一个多页面标签功能,之前有试过vue-element-admin的多页面,以为很完美,就按它的思路重新写了一个,但发现还是有问题的. vue-element-admin ...

  6. asp.net中listview下嵌套gridview

    最近在上软件工程实践课程,想做一个类似于QQ空间或者朋友圈一样的效果.即显示所有好友发送的动态以及动态下回复的信息. 自己YY了一种方法,一开始以为不能达到效果,研究了2个小时终于实现了,感觉效果还是 ...

  7. ListView 中嵌套 GridView

    1.主布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andr ...

  8. Android ListView的item点击无响应的解决方法

    假设listitem里面包含button或者checkbox等控件,默认情况下listitem会失去焦点,导致无法响应item的事件,最经常使用的解决的方法 是在listitem的布局文件里设置des ...

  9. android listView嵌套gridview的使用心得

    在开发的过程中可能需要用到listview嵌套gridview的场景,但是在Android中, 不能在一个拥有Scrollbar的组件中嵌入另一个拥有Scrollbar的组件,因为这不科学,会混淆滑动 ...

随机推荐

  1. Android基础知识总结

    四大组件之一活动 活动状态 运行状态:活动处于栈顶 暂停状态:活动不处于栈顶,但仍然可见 停止状态:完全不可见 销毁状态:离开返回栈 生存期 onCreate() onStart():不可见到可见调用 ...

  2. 【SPOJ 1812】Longest Common Substring II

    http://www.spoj.com/problems/LCS2/ 这道题想了好久. 做法是对第一个串建后缀自动机,然后用后面的串去匹配它,并在走过的状态上记录走到这个状态时的最长距离.每匹配完一个 ...

  3. 【BZOJ 2118】墨墨的等式

    http://www.lydsy.com/JudgeOnline/problem.php?id=2118 最短路就是为了找到最小的$x$满足$x=k×a_{min}+d,0≤d<a_{min}$ ...

  4. 【CodeVS 5032】【省队集训2016 Day5 T1】Play with array

    一开始我用分块大法,分成$\sqrt{n}$块,每个块上维护一个Splay,然后balabala维护一下,时间复杂度是$O(n\sqrt{n}logn)$.后来对拍的时候发现比$O(n^2)$的暴力跑 ...

  5. IE6和IE7中<a>标签宽高设置无效的问题

    昨天写了一个引导界面, 发现界面中的IE67存在一个问题, 在某些情况下,  A锚链接如果设置了宽高,而且position:absolute的情况下, A标签的宽高无效, 至于总体的效果, 因为这个A ...

  6. python 进程间共享数据 (一)

    def worker(num, mystr, arr): num.value *= 2 mystr.value = "ok" for i in range(len(arr)): a ...

  7. Redis必须注意的慢查询问题

    今天解析服务在查询Redis的Set数据过程中抛出timeout exception,产生异常的方法是: db.SetMembers(key); 这个API返回结果是指定set内的所有kv对象: 解决 ...

  8. JavaScript的DOM操作-重点部分-第一部分

    Window.document 对象 一.找到元素 document.getElementById("id"); 根据id找,最多找一个: var a = document.get ...

  9. javascript中数组去重的4种方法

    面试前端必须准备的一道问题:怎样去掉Javascript的Array的重复项.在最近面试中,百度.腾讯.盛大等都在面试里出过这个题目.这个问题看起来简单,但其实暗藏杀机. 考的不仅仅是实现这个功能,更 ...

  10. 寻找数组中的第K大的元素,多种解法以及分析

    遇到了一个很简单而有意思的问题,可以看出不同的算法策略对这个问题求解的优化过程.问题:寻找数组中的第K大的元素. 最简单的想法是直接进行排序,算法复杂度是O(N*logN).这么做很明显比较低效率,因 ...