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

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

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

Ответ 1

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

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

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

mEditText.setImeOptions(EditorInfo.IME_ACTION_DONE);

Благодаря @Eliezer для исправления

Ответ 2

Согласно комментарий Прашама, я сделал это, и это спасло мою жизнь, благодаря ему! Режим EditText и SoftWindowInput довольно затруднительный, если у вас есть макет с ScrollView, и вы его заполняете динамически.

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

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

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

Ответ 3

Я стараюсь использовать два разных режима для вкладок. Режимы 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);

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

P.S. улучшение ответа

Ответ 4

Программный код можно использовать программно

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

Спасибо Дипак

Ответ 5

В Android Xamarin вы можете сделать это программно

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