Есть ли способ изменить значение android: windowSoftInputMode из класса Java? - PullRequest
73 голосов
/ 26 мая 2011

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

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

Ответы [ 5 ]

106 голосов
/ 26 мая 2011

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

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

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

mEditText.setImeOptions(EditorInfo.IME_ACTION_DONE);

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

32 голосов
/ 22 января 2013

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

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

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

Activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
9 голосов
/ 23 декабря 2014

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

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

0 голосов
/ 30 апреля 2019

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

 protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.DetailDesign);
             Window.SetSoftInputMode(SoftInput.AdjustPan);
        }
0 голосов
/ 26 мая 2011

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

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

Спасибо Deepak

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...