想给整个屏幕设置一个点击事件 当在屏幕上点击的时候 产生一个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 est essentiellement une vue, ce n'est donc pas un problème de définir un écouteur pour celle-ci. Vous ne l'avez pas défini sur match_parent ?
Les points à noter sont :
1. Il est possible de déterminer si le RelativeLayout que vous avez défini remplit tout l'écran en définissant la couleur d'arrière-plan.
2. Y a-t-il une couverture d'événement ? Par exemple, s'il y a un bouton sur RelativeLayout et que le bouton sur lequel vous cliquez, l'événement du bouton sera en conflit avec votre événement RelativeLayout
. Dans ce cas, le bouton couvrira l'événement. Événement RelativeLayout
Il n'y a pas de
点击事件
dans l'événement tactile sous-jacent点击事件
est simulé parView
Le processus de simulation est complété par plusieurs méthodes de traitementView
detouch
. L'événement tactile sera transmis du parentView
à l'enfantView
, puis bouillonnera de l'enfantView
au parentView
Au cours de ce processus, l'enfantView
pourra manger l'événement. En d'autres termes, l'événement tactile ne peut pas revenir au parentView
, puisque l'événement ne peut pas être reçu, le parentView
ne peut pas terminer la simulation de l'événement clic. La solution pourest d'hériter et de réécrire plusieurs méthodes de
View
traitement detouch
, et de compléter vous-même la simulation des événements de clic.relativeLayout.setClickable(true);
FrameLayout rootview=(FrameLayout)findViewById(android.R.id.content);
rootview.setClickable(true);
Je vous suggère de jeter un œil au mécanisme de distribution d'événements Android pour comprendre pourquoi il ne fonctionne pas.
Si vous devez implémenter cette fonction, définissez le
OnClickListener
de toutes les vues sur le même objet.