96 votes

Comment définir le focus sur une vue lorsqu'une mise en page est créée et affichée?

Actuellement, j'ai une mise en page qui contient un Button , un TextView et un EditText . Lorsque la mise en page est affichée, le focus est automatiquement placé sur les EditText , ce qui déclenche l'affichage du clavier sur un téléphone Android. Ce n'est pas ce que je veux. Est-il possible de régler le focus sur TextView ou sur rien lorsqu'une mise en page est affichée? Merci.

111voto

mbaird Points 31293

Définir le focus: Le framework gérera le déplacement du focus en réponse aux commentaires de l'utilisateur. Pour forcer le focus sur une vue spécifique, appelez requestFocus ()

17voto

Charles Mosndup Points 206

Cela marche:

 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
 

6voto

user256239 Points 3579

J'ai essayé requestFocus (), mais cela ne fonctionne pas. Voir le code ci-dessous:

 public class HelloAndroid extends Activity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       LinearLayout mainVw = (LinearLayout) findViewById(R.id.main_layout);

       LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
               LinearLayout.LayoutParams.FILL_PARENT,
               LinearLayout.LayoutParams.WRAP_CONTENT);

       EditText edit = new EditText(this);
       edit.setLayoutParams(params);
       mainVw.addView(edit);

       TextView titleTv = new TextView(this);
       titleTv.setText("test");
       titleTv.setLayoutParams(params);
       mainVw.addView(titleTv);

       titleTv.requestFocus();
   }
}
 

La mise au point passe toujours à EditText lorsque la page est affichée. Comment faire pour que le focus soit sur le TextView?

6voto

ravi Points 21

Ensemble

  android:focusable="true"
 

dans votre <EditText/>

5voto

abeljus Points 111

Vous pouvez essayer de cacher le clavier. Quelque chose comme ça:

 InputMethodManager inputManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
 

Prograide.com

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.

Powered by:

X