Есть ли способ изменить значение 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);
}