想给整个屏幕设置一个点击事件 当在屏幕上点击的时候 产生一个Onclick事件 但是我给一个
RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.rela);
relativeLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
但是这样貌似不行啊 在整个屏幕上设置Touch事件的监听用这个方法可以实现 但是单机事件好像不行啊
RelativeLayout은 기본적으로 뷰이므로 리스너를 설정하는 데 문제가 없습니다. match_parent로 설정하지 않으셨나요?
주의할 점은 다음과 같습니다.
1. 설정한 RelativeLayout이 전체 화면을 채울지 여부는 배경색 설정에 따라 결정됩니다.
2. 이벤트 적용 범위가 있나요? 예를 들어 RelativeLayout에 버튼이 있고 해당 버튼을 클릭하면 해당 버튼 이벤트가 RelativeLayout
이벤트와 충돌합니다. RelativeLayout 이벤트
기본 터치 이벤트에는
点击事件
이 없습니다.点击事件
은View
의View
처리 방법에 따라 시뮬레이션됩니다. 터치 이벤트는 부모touch
에서 자식View
으로 전달된 다음 자식View
에서 부모View
으로 버블링됩니다. 이 과정에서 자식View
이 이벤트를 먹을 수 있습니다. 즉, 터치 이벤트를 부모View
로 다시 버블링할 수 없습니다. 이벤트를 수신할 수 없으므로 부모View
는 클릭 이벤트의 시뮬레이션을 완료할 수 없습니다.View
에 대한 해결책은의
View
처리 방법을 여러 개 상속하고 다시 작성하고, 클릭 이벤트 시뮬레이션을 직접 완료하는 것입니다.touch
relativeLayout.setClickable(true);
FrameLayout rootview=(FrameLayout)findViewById(android.R.id.content);
rootview.setClickable(true);
Android 이벤트 배포 메커니즘을 살펴보고 작동하지 않는 이유를 이해하는 것이 좋습니다.
이 기능을 구현해야 한다면 모든 뷰의
OnClickListener
를 동일한 개체로 설정하세요.