web-dev-qa-db-fra.com

Existe-t-il un moyen de changer la valeur Android: windowSoftInputMode de Java?

Je veux que mes onglets aient des propriétés windowSoftInputMode différentes pour chaque onglet. Comment accéder à cette propriété depuis la classe Java lorsque toutes les manipulations de votre onglet se font à partir d'une seule activité?

Existe-t-il un moyen d'accéder à cette propriété de manifeste à partir du code Java?

74
Prasham

Utilisez ce qui suit pour modifier le softInputMode pour une activité.

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

Utilisez ce qui suit pour modifier le type de softInput pour un EditText.

mEditText.setImeOptions(EditorInfo.IME_ACTION_DONE);

Merci à @Eliezer pour la correction

108
66CLSjY

Selon commentaire de Prasham , je l'ai fait et cela m'a sauvé la vie, grâce à lui! Les modes EditText et SoftWindowInput sont assez bogués lorsque vous avez une disposition avec ScrollView et que vous la remplissez dynamiquement.

Depuis que j'avais parcouru ce post mais que j'avais continué à lire d'autres réponses/commentaires (comme celui de Prashan), j'ai décidé de l'écrire dans un nouveau post.

Ci-dessous le code que j'ai utilisé avec mon ScrollView:

Activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
32
aman

Je vise à utiliser deux modes différents pour les onglets. Les modes sont SOFT_INPUT_ADJUST_RESIZE et SOFT_INPUT_ADJUST_NOTHING.

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

La ligne de code ci-dessus ne fonctionne tout simplement pas d'elle-même. L'application se comporte toujours dans un état ADJUST_NOTHING. Toutefois, si windowSoftInputMode="adjustResize" est inséré dans <activity> tag dans le fichier AndroidManifest.xml, la fenêtre de l'application est redimensionnée par défaut. De plus, lorsque vous appelez la ligne suivante

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

il se comportera comme prévu et rien n'est redimensionné.

P.S. amélioration de la réponse

9
Shnkc

Vous pouvez utiliser le code suivant par programme

Android.view.inputmethod.InputMethodManager imm = (Android.view.inputmethod.InputMethodManager) context
                .getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

Merci Deepak

0

Dans Xamarin Android Vous pouvez faire comme cela par programme

 protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.DetailDesign);
             Window.SetSoftInputMode(SoftInput.AdjustPan);
        }
0
zubairz