11
votes

Déplacer la mise au point d'une zone d'édition de texte à un autre

J'écris une application de calculatrice simple (en utilisant une disposition absolue avec 3 boîtes d'édition et des boutons), qui comporte deux boîtes INPUTTEXT et une boîte de sortie.

onClick(View arg0){
    operator.setText("+");

    //Move focus from input1 to input2
    input1.clearFocus();
    input2.setNextFocusDownId(input2.getId());
}


2 commentaires

Eh bien, j'ai trouvé la réponse, nous pouvons simplement appeler Input.Requestfocus (); changer le focus.


Et si vous avez besoin d'utiliser cela dans TextWatcher et que vous devez le généraliser, ce qui signifie que vous n'avez pas d'utiliser un objet spécifique pour appeler Demandefocus (); Avez-vous la réponse pour cela?


3 Réponses :


0
votes

[Au fait, vous voulez éviter d'utiliser Absolutelayout - il est obsolète et peut être supprimé.]

Au lieu d'utiliser OnClick, vous souhaitez que l'action se produise dans une méthode d'annonce de Keylistener. P>

Voir: setkeylistener p>

alors vous pouvez examiner le clé KeyEvent S avec P>

KeyEvent.getAction() == KeyEvent.KEYCODE_PLUS


0 commentaires

2
votes

Essayez ceci:

INPUT1.STNEXTFOCUSTODDID (INPUT2.GETID ());

Vous utilisez Input2, et je suppose que vous voulez aller de l'entrée1 à INPUT2.


0 commentaires

30
votes

Eh bien, j'ai trouvé la réponse: nous pouvons simplement appeler INPUT2.ReQuestFocus (); pour changer la mise au point.


0 commentaires