美文网首页
LinearLayout点击事件与其内部ImageView点击事

LinearLayout点击事件与其内部ImageView点击事

作者: 毒瘤榜首 | 来源:发表于2016-04-18 16:41 被阅读5223次

先上要做出的效果图:

问题原因和解决方案:

比如“做过的题”功能是用一个LinearLayout做的布局,里面包含ImageView和TextView,点击“做过的题”,整个LinearLayout会变色,松开颜色就再还原,这是一个非常常见的功能,但是当你的手指点在图片上也就是ImageView上时,是不会触发LinearLayout事件的。设置了ImageView的点击事件后点击图片发现它会走ImageView的方法,说明这种布局ImageView的优先级是要高于LinearLayout的;

针对这种情况有种解决办法:代码中同时设置LinearLayout和ImageView的点击事件,让它俩公用一个方法即可;

但是这样的缺点就是你要多写一个点击事件,而且点击ImageView控件虽然会执行方法但是LinearLayout的颜色是不会变的;

我们可以换一种思路:ImageView有没有一种属性可以忽略点击事件呢?答案是有的:android:clickable="false";

这个属性在其他控件也是存在的,意义就是忽略点击事件。但是,很抱歉,又有但是了。在ImageView中无论设置clickable=false还是设置focusable=false还是设置onClick=false(设置这个点击就崩溃),点击后都不会去执行LinearLayout的点击事件。万般无奈之下,我换了个控件:ImageButton,使用这个控件,将clickable="false"就实现想要的效果了。

最后贴上代码:

希望能帮到大家,顺便如果有能使用ImageView属性设置来完成此需求的可以留言给我,感激不尽。

相关文章

网友评论

      本文标题:LinearLayout点击事件与其内部ImageView点击事

      本文链接:https://www.haomeiwen.com/subject/tmralttx.html