博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Layout父元素点击不到的解决办法
阅读量:6097 次
发布时间:2019-06-20

本文共 642 字,大约阅读时间需要 2 分钟。

问题:

clipboard.png

刚学习Click点击事件的时候,出现了子元素“挡住”父元素而使父元素点击不到的情况。比如上面的布局:

点击LiearLayout的时候,被ImageButton"挡住了",LnearLayout的Onclick事件没有响应。。

解决方法:

解决起来其实很简单,只需要在子元素中加入android:clickable="false"就可以了。

原理分析:

这种原因出现的根本原因其实是click事件处理的方式所导致的。上面所说的“子元素挡住了父元素”其实只是一个表面现象,真正原因是因为,在处理click事件的时候,默认情况下,首先是由父元素去捕捉(但不会立即执行)。如果子元素有响应click事件的能力的话,父元素就不会处理click事件,会直接将捕捉到的click事件交给子元素去处理。所以就出现了“子元素挡住了父元素”的这种情况。这和javascript的事件捕获机制是差不多的。

所以当把子元素的属性设为android:clickable="false的时候,子元素就没有处理click事件的能力了,父元素就会自己来执行点击事件,而不再把click事件交给子元素了。
一般button默认都有响应事件的能力。
要深入了解的话,可以去搜一搜“Android的事件处理机制”,大神们都整理好了资料,可以好好研究研究。

备注:

了解的还不够深入,之后学细了,再重新改这篇文章。写的有不妥的地方还请见谅。

转载地址:http://xybza.baihongyu.com/

你可能感兴趣的文章
spring mvc入门
查看>>
2012在数据库技术会议上的讲话PPT打包
查看>>
【Android】 TextView设置个别字体样式
查看>>
python svn
查看>>
raise语句
查看>>
sequence2(高精度dp)
查看>>
【转载】COM 组件设计与应用(四)——简单调用组件
查看>>
查询oracle sql运行计划,一个非常重要的观点--dba_hist_sql_plan
查看>>
MyBatis动态传入表名,字段名参数的解决办法---statementType用法
查看>>
如何通过js实现图片预览功能
查看>>
IE 和Firefox的js兼容性总结
查看>>
linux shell脚本查找重复行/查找非重复行/去除重复行/重复行统计
查看>>
拦截导弹
查看>>
thinkphp中的配置与读取C方法详解
查看>>
WORD里怎样能做到局部“分栏”就是一页里有的分有的不分
查看>>
Angular - - $interpolate 和 $parse
查看>>
gradle项目中profile的实现
查看>>
转载他人文章对站点好还是不好
查看>>
mysql半同步(semi-sync)源码实现
查看>>
LeetCode - Triangle
查看>>