android 之 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 =new LinearLayout.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 后的效果是满足上述所有想要的效果。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏绿巨人专栏

Architecture : Describable Command and Identifiable Data

2925
来自专栏静默虚空的博客

HTML 快速指南

快速指南 本章节提供了 HTML 最常用标签的简单实用示例。 你可以将其当做速查手册。 基础 <!DOCTYPE html> <html> <head>...

18310
来自专栏魂祭心

原 大数运算

3275
来自专栏林德熙的博客

win10 UWP 蜘蛛网效果 在 Canvas 画一个点指定添加到 Canvas 的 Element 的位置随机移动点画线自动移动全部代码

那么我来告诉大家如何做这个效果。 第一步是在 Canvas 画点,第二步是让点移动,第三步是画线

762
来自专栏张善友的专栏

在asp.net mvc上应用新ASP.NET图表控件

微软去年11月发布了一个很酷的新ASP.NET服务器控件,<asp:chart />,可以免费用在ASP.NET 3.5中,而且还可以用在asp.net mvc...

2088
来自专栏李成熙heyli

webpack Performance: The Comprehensive Guide

Introduction For beginners, webpack building performance is sometimes annoying. ...

1907
来自专栏C# 编程

[C#]使用Gembox.SpreadSheet向Excel写入数据及图表

本文为原创文章、源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称、作者及网址,谢谢! 开发工具:VS2017 语言:C# DotNet版本:...

1870
来自专栏JarvanMo的IT专栏

基于ExoPlayer的ExoPlayerVideoView

在Android设备中,播放视频和音乐是非常普遍的。Android框架提供了一个对于媒体的操作的最省代码的解决方案:MediaPlayer。它提供了低等级的媒体...

943
来自专栏跟着阿笨一起玩NET

DataGridView减少闪烁的解决办法

http://www.codeproject.com/Tips/390496/Reducing-flicker-blinking-in-DataGridView

561
来自专栏技术小黑屋

Auth Password Cannot Be Read From a File

I am facing this problem which leaves the error message

392

扫码关注云+社区