Quelle est la différence entre setFocusable et setFocusableInTouchMode?
Quelle est la différence entre setFocusable
et setFocusableInTouchMode
pour un Androïde?
Question supplémentaire après avoir essayé de lire le la documentation:
Et comment sont-ils différents de isFocusable
et isFocusableInTouchMode
?
Cela est clairement expliqué dans la documentation.
Je trouve souvent les explications sur stack overflow plus facile à comprendre que la documentation. Je suis en train de passer à travers la documentation, mais je vais avoir du mal à comprendre. J'espérais que quelqu'un ici serait prêt à expliquer et peut-être donner un exemple.
J'ai ajouté ma propre réponse ci-dessous pour expliquer plus clairement ce que je ne comprenais pas quand j'ai demandé.
Peu est "clairement", a expliqué dans la documentation, c'est pourquoi des sites comme existent. Il a de grandes explications de requestLayout / invalider et getHeight / getMeasuredHeight parce que la documentation tend à être vague ou similaire. Cela est clairement expliqué dans la question.
Je trouve souvent les explications sur stack overflow plus facile à comprendre que la documentation. Je suis en train de passer à travers la documentation, mais je vais avoir du mal à comprendre. J'espérais que quelqu'un ici serait prêt à expliquer et peut-être donner un exemple.
J'ai ajouté ma propre réponse ci-dessous pour expliquer plus clairement ce que je ne comprenais pas quand j'ai demandé.
Peu est "clairement", a expliqué dans la documentation, c'est pourquoi des sites comme existent. Il a de grandes explications de requestLayout / invalider et getHeight / getMeasuredHeight parce que la documentation tend à être vague ou similaire. Cela est clairement expliqué dans la question.
OriginalL'auteur Suragch | 2014-05-22
Vous devez vous connecter pour publier un commentaire.
setFocusable principalement utilisé pour activer/désactiver l'affichage d'événements de focus sur le tactile, la mode et la mode clavier( à l'aide d'en haut/en bas/touche next (suivant).
setFocusableInTouchMode principalement utilisé pour activer/désactiver l'affichage d'événements de focus sur le mode tactile seul.
Si vous êtes invalide setFocusable il a aussi désactivé l'affichage d'événements de focus sur le mode tactile.
Pas de. Vous pouvez appeler uniquement setFocusableInTouchMode(vrai), mais de s'assurer que vous n'avez pas appelé setFocusable(false).
Merci pour cette. J'ai été paramètre à la fois, quand tout ce que j'ai besoin, c'était setFocusable. Malheureusement, c'est parce que lors de la recherche d'informations sur la définition explicite de l'accent, cette personne a suggéré d'utiliser les deux (et évidemment ne pas bien comprendre la différence, soit).
OriginalL'auteur Rajkumar
Après la lecture de la réponse de @Raj, en passant par l'Android la documentation, et d'expérimenter avec le code, je pense comprendre comment ils fonctionnent un peu mieux maintenant. Voici un peu d'aide supplémentaire si quelqu'un d'autre est de la même manière confuse. Permettez-moi de savoir si j'ai eu tort.
Points de vue peut être ciblée ou non ciblée. Quelques points de vue de modifier leur apparence quand ils sont concentrés. Cela peut être particulièrement utile lors de l'utilisation d'un clavier pour naviguer dans la mise en page. De cette façon, vous savez où vous en êtes avant de vous cliquez sur une vue. Même les vues qui ne sont pas naturellement changement lors de la mise au point peut être faite par à l'aide d'un sélecteur et un drawable. Si vous n'êtes pas à l'aide d'un clavier pour naviguer, cependant, l'accent n'est pas aussi important.
Il y avait trois paires de choses qui ont été source de confusion moi:
La première paire vous indique juste que les informations sur la vue. Qui est de savoir si ou non il est même possible que ce point de vue pour être porté. Vous pouvez trouver en faisant quelque chose comme ceci:
Vous êtes en mode tactile après avoir touché l'écran. Donc, quelque chose qui peut-être peut recevoir le focus lorsque vous utilisez le clavier ne peut pas être peut recevoir le focus lorsque vous êtes à l'aide de vos doigts. Vous pouvez le vérifier comme ceci:
Comme je l'ai dit, cela ne vous raconte pas savoir si c'est encore possible pour donner le point de vue de l'attention ou pas. Si vous voulez à réellement donner le point focal, vous devez d'abord assurez-il possible d'être concentré. Vous pouvez le faire avec l'une des commandes suivantes:
Si vous êtes en mode tactile et que vous appelez
setFocusableInTouchMode(true)
puis les deuxmyView.isFocusable()
etmyView.isFocusableInTouchMode()
retournera true. Vous n'avez pas besoin de les appeler à la fois. Toutefois, si vous appelezmyView.setFocusable(true)
puismyView.isFocusableInTouchMode()
ne sera pas changé.Maintenant de faire enfin le point de vue porté, vous devez appeler le suivant:
Je n'ai toujours pas pleinement comprendre
requestFocusInTouchMode()
parce que, tout en utilisantrequestFocus()
a fonctionné pour moi, mais le la documentation dit à propos derequestFocusInTouchMode()
:Enfin, il convient de noter que Romain Guy dit dans ce post:
OriginalL'auteur Suragch