onClickListener sur un LinearLayout
Eu un petit problème avec une fonctionnalité que j'aimerais mettre en œuvre.
J'ai un LinearLayout
, contenant 2 TextViews
. J'avais envie de mettre un onClickListener
sur elle, de sorte que celui-ci se comporte comme un élément dans un ListView
.
J'ai essayé quelques possibles de mise en œuvre de la présente, et il a obtenu de travail à l'aide de l'attribut xml android:onClick
de la LinearLayout
.
Que je veux l'application visuellement réagir à un clic sur le LinearLayout
(comme dans un ListView
), j'ai mis cela dans le port d'écoute de la méthode de rappel :
l.setBackgroundColor(android.R.drawable.list_selector_background);
l est un LinearLayout
objet, initialisé avec findViewById()
;
- Je obtenir une demande ne répond pas à chaque fois que j'ai essayer de cliquer sur la mise en page. J'ai essayé de remplacer le code dans la méthode de rappel par un Toast message d'apparaître, et ça fonctionne, donc je suppose que le problème est dans la setBackgroundColor
.
Est quiconque est familier avec cela?
PS: désolé, je ne peux pas poster plus de code pour l'instant, je suis au travail.
- Utilisation DDMS ou
adb logcat
pour examiner votre trace de la pile pour trouver la source de votre exception. Modifier cette question et de le poster ici si vous ne pouvez pas comprendre.
Vous devez vous connecter pour publier un commentaire.
Vous devez définir
LinearLayout
attributandroid:clickable="true"
dans le fichier xml du fichier de mise en page ousetClickable(true)
dans le java code d'activité.android:clickable = "true"
serait la syntaxe.j'ai remarqué que tous les conseils ci-dessus ne sont pas helpt tant que tous les éléments enfants à l'intérieur de la LinearLayout a l'attribut android:textIsSelectable="true".
J'ai découvert que setClickable(vrai) serait la cause encore clics pour aller aux enfants de la linearlayout. J'ai trouvé que pour avoir le LinearLayout capturer le toucher plutôt que c'est des enfants, j'ai dû remplacer la dispatchTouchEvent méthode j'ai donc créé une sous-classe de LinearLayout pour cet effet. Semble comme une vilaine solution si.
vous devez régler le LinearLayout est focusable true et la valeur de tous les enfants de la vue peut recevoir le focus à faux, ne pas utiliser android:cliquable="true", mais vous ne pouvez pas voir l'effet du clic de la linelayout. BTW, le meilleur moyen est de mettre en œuvre la onTouchEvent api.
Eu le même problème, j'ai essayé pendant une heure toutes les réponses mais aucune n'a fonctionné.
Puis j'ai réalisé que je devais juste faire la promotion de mon LinearLayout à la partie inférieure de la mise en page, depuis d'autres points de vue bloqué, et puis il a travaillé, sans ajouter les attributs spéciaux pour la mise en page.
De le mettre ici au cas où ça pourrait aider quelqu'un un jour.