Есть ли способ изменить значение android:windowSoftInputMode из класса java?

Я хочу действовать мои вкладки, чтобы иметь разные windowSoftInputMode свойства для каждой вкладки. Как получить доступ к этому свойству из класса java, когда вся обработка вашей вкладки выполняется из одного действия?

есть ли способ получить доступ к этому свойству манифеста из кода java?

4 ответов


используйте следующее, чтобы изменить softInputMode для действия.

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

используйте следующее, чтобы изменить тип softInput для EditText.

mEditText.setImeOptions(EditorInfo.IME_ACTION_DONE);

спасибо @Eliezer за исправление


по данным Prasham это, Я сделал это, и это спасло мне жизнь, благодаря ему! The EditText и SoftWindowInput режим довольно глючные, когда у вас есть макет с ScrollView и вы заполняете его динамически.

поскольку я прошел через этот пост, но продолжал читать другие ответы / комментарии (например, Прашана), я решил написать его в новом посте.

ниже код, который я использовал с моим ScrollView:

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

Я хочу использовать два разных режима для вкладок. Режимы SOFT_INPUT_ADJUST_RESIZE и SOFT_INPUT_ADJUST_NOTHING.

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

строка кода выше просто не работает сама по себе. Приложение всегда ведет себя в состоянии ADJUST_NOTHING. Однако, если windowSoftInputMode="adjustResize" вставить в <activity> тег в AndroidManifest.xml-файл, окно приложения изменяется по умолчанию. Кроме того, при вызове следующей строки

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

он будет вести себя, как ожидалось, и ничего не изменяется.

П. С. совершенствование на ответ


можно использовать следующий код

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

спасибо Дипак!--2-->