J'ai une exigence dans laquelle j'ai une MainActivity. De cette activité, j'instancier 4 fragments (DISONS Fragmenta, FragmentB, FragmentC, FragmentDComment faire pour définir windowsoftinputmode par programmation à partir de Fragments?
Sur ces quatre fragments,. 3 Fragments (Disons Fragmenta, FragmentB, FragmentC), je veux définir la windowsoftinputmode de MainActivity () sur SOFT_INPUT_ADJUST_PAN
Et sur un Fragment() disons FragmentD), je veux définir windowsoftinputmode() de MainActivity à SOFT_INPUT_ADJUST_NOTHING
.
Alors ce que je fais est, sur chaque méthode onViewCreated() de Fragment I exécuter la ligne de code suivante à l'évolution LayoutParams drapeau:
((MainActivity)getActivity()).getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
ou
((MainActivity)getActivity()).getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
Le problème est qu'il ne fonctionne pas et je ne suis pas capable de définir correctementSoftInputMode et je ne peux pas empêcher le redimensionnement de la fenêtre.
lignes identiques de code fonctionne parfaitement quand je les exécute dans onCreate() de MainActivity comme indiqué:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
Mais que la valeur est définie pour les quatre fragments. Ma déclaration MainActivity dans le manifeste est:
<activity
android:name="com.test.MainActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait"/>
quelqu'un peut aider à ce que je fais mal dans ce domaine. Je veux avoir un comportement différent pour les différents Fragments.
avez-vous essayé? cela a-t-il aidé? – batsheva
oui, chose était que je ne spécifiais pas windowsSoftInputMode, et pour changer windowsSoftInputMode de Fragment, il doit être déclaré dans le manifeste d'abord et de modifier par programmation à partir de Fragment. – Tarun
@ Terri Pouvez-vous partager votre code qui a fonctionné, je suis actuellement en train de résoudre ce problème et rien ne semble fonctionner. – iBEK