Double Possible:
Arrêter EditText de gagner de l'accent à l'Activité de démarrage?Dans mon application j'ai un seul EditText avec quelques TextViews, bouton et un compteur. Mon EditText reçoit le focus puisque c'est le seul focusable vue dans cette activité, je crois. Mon EditText montre avec une bordure orange et le curseur sur le champ.
Maintenant, je voudrais supprimer le focus à partir de ce champ (je ne veux pas le curseur et la frontière montrer). Est-il un moyen de faire cela?
J'ai été en mesure de se concentrer sur le bouton en faisant bouton.seFocusableInTouchMode() et le bouton.requestFocus(). Mais cela met en évidence le bouton et est évidemment pas ce que je veux.
Réponses
Trop de publicités?Cochez cette question et la réponse choisie: http://stackoverflow.com/questions/1555109/stop-edittext-from-gaining-focus-at-activity-startup C'est moche mais ça marche, et autant que je sache, il n'y a pas mieux Solution.
Utilisez le code joint à donner le focus à "quelqu'un d'autre", c'est OK si vous avez un point de vue où vous voulez simplement pour fermer le clavier et la libération de la focus, vous n'avez pas vraiment à qui il est.
Utiliser comme ceci: FocusHelper.releaseFocus(viewToReleaseFocusFrom)
public class FocusHelper {
public static void releaseFocus(View view) {
ViewParent parent = view.getParent();
ViewGroup group = null;
View child = null;
while (parent != null) {
if (parent instanceof ViewGroup) {
group = (ViewGroup) parent;
for (int i = 0; i < group.getChildCount(); i++) {
child = group.getChildAt(i);
if(child != view && child.isFocusable())
child.requestFocus();
}
}
parent = parent.getParent();
}
}
}
Doc: La méthode de traverse de l'enfant et la vue de l'arbre et regarde pour le premier enfant à donner le focus.
Edit: Vous pouvez également utiliser l'API pour cela:
View focusableView = v.focusSearch(View.FOCUS_DOWN);
if(focusableView != null) focusableView.requestFocus();