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?
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
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);
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
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
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);
}