为了账号安全,请及时绑定邮箱和手机立即绑定

关于android的整个屏幕的点击事件

关于android的整个屏幕的点击事件

慕村225694 2019-03-19 17:15:36
想给整个屏幕设置一个点击事件 当在屏幕上点击的时候 产生一个Onclick事件 但是我给一个RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.rela);relativeLayout.setOnClickListener(new OnClickListener() {                        @Override            public void onClick(View v) {                // TODO Auto-generated method stub                            }        });        但是这样貌似不行啊 在整个屏幕上设置Touch事件的监听用这个方法可以实现 但是单机事件好像不行啊
查看完整描述

6 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

需要注意的点是:
1.你设置的RelativeLayout 是否布满了整个屏幕,可以通过设置背景颜色来确定。
2.是否有事件覆盖,比如如果RelativeLayout 上面有个按钮,你点击的按钮,按钮事件就会和你的RelativeLayout
事件冲突,这种都会是按钮覆盖了RelativeLayout的事件

查看完整回答
反对 回复 2019-04-18
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

在底层触摸事件中是没有点击事件的,点击事件是有View模拟出来的,模拟的过程在Viewtouch处理的几个方法中完成。触摸事件会由父View传递给子View,再由子View冒泡到父View,这个过程中,子View是可能吃掉事件的,也就是说,触摸事件无法冒泡回父View,既然收不到事件,父View也就无法完成点击事件的模拟。
解决方法是继承重写Viewtouch处理的几个方法,在其中自己完成点击事件的模拟。

查看完整回答
反对 回复 2019-04-18
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

relativeLayout.setClickable(true);


查看完整回答
反对 回复 2019-04-18
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

FrameLayout rootview=(FrameLayout)findViewById(android.R.id.content);
rootview.setClickable(true);

查看完整回答
反对 回复 2019-04-18
?
万千封印

TA贡献1891条经验 获得超3个赞

建议你看看Android事件分发机制,就知道为什么不行了。 
如果你非要实现这个功能的话,就将所有视图的OnClickListener设置为同一个对象。

查看完整回答
反对 回复 2019-04-18
  • 6 回答
  • 0 关注
  • 1938 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号