J'ai une question relativement simple. J'ai une activité avec beaucoup d'EditText en eux. Lorsque j'ouvre l'activité, elle se concentre automatiquement sur le premier EditText et affiche le clavier virtuel.
Comment puis-je empêcher cela?
J'ai une question relativement simple. J'ai une activité avec beaucoup d'EditText en eux. Lorsque j'ouvre l'activité, elle se concentre automatiquement sur le premier EditText et affiche le clavier virtuel.
Comment puis-je empêcher cela?
J'ai plusieurs implémentations décrit ici, mais maintenant, j'ai ajouté dans l' AndroidManifest.xml
mon Activity
la propriété de:
android:windowSoftInputMode="stateAlwaysHidden"
Je pense que c'est la voie facile, même si vous utilisez fragments
.
"stateAlwaysHidden" Le clavier est toujours caché lorsque l' l'activité principale de la fenêtre a le focus d'entrée.
J'ai eu un similaires problème, même lors de la commutation de languettes du clavier surgit automatiquement et est resté en place, avec Android 3.2.1 sur une Tablette. Utilisez la méthode suivante:
public void setEditTextFocus(EditText searchEditText, boolean isFocused)
{
searchEditText.setCursorVisible(isFocused);
searchEditText.setFocusable(isFocused);
searchEditText.setFocusableInTouchMode(isFocused);
if (isFocused) {
searchEditText.requestFocus();
} else {
InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(searchEditText.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS );
}
}
Dans le onCreate() et dans le onPause() de l'activité pour chaque EditText:
setEditTextFocus(myEditText, false);
Pour chaque EditText un OnTouchListener:
myEditText.setOnTouchListener(new EditText.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
setEditTextFocus(myEditText, true);
return false;
}
});
Pour chaque EditText
dans la OnEditorActionListener
:
myEditText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {
.......
setEditTextFocus(myEditText, false);
return false;
}
});
Et pour chaque EditText
dans la layout xml
:
android:imeOptions="actionDone"
android:inputType="numberDecimal|numberSigned" // Or something else
Il ya probablement plus de l'optimisation de code possible.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.