Я хочу, чтобы мои вкладки имели разные windowSoftInputMode
свойства для каждой вкладки. Как получить доступ к этому свойству из класса java, когда вся обработка вашей вкладки выполняется с помощью одного действия?
Есть ли способ получить доступ к этому свойству манифеста из Java-кода?
adjustPan
иadjustResize
вы можете пойти вWindowManager.LayoutParams
класс, вы можете найти много полезных констант, которые можно использовать вsetSoftInputMode
методеgetWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
я уже тестировал его, и действительно работаетWindow#setSoftInputMode
являютсяWindowManager.LayoutParams.SOFT_INPUT_*
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
но клавиатура все еще подталкивает мой FrameLayout, который находится поверх других представлений. Но на этом месте другие взгляды остаются. Он работает, когда я добавляю его в манифест, но я не хочу применять его для всего действия.Согласно комментарию Прашама , я сделал это, и благодаря ему это спасло мне жизнь!
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);
он будет вести себя так, как ожидалось, и ничего не изменится.
PS улучшение ответа
источник
windowSoftInputMode="adjustResize"
в манифесте помогает в обработке этого флага позже. Особенно в сценарии, когда у вас есть в основном фрагменты в одном действии. Таким образом, можно динамически изменять состояние ввода Activity, программно переключаясь сSOFT_INPUT_ADJUST_RESIZE
возврата на состояниеSOFT_INPUT_ADJUST_NOTHING
по требованию. Хороший!В Xamarin Android вы можете делать это программно
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.DetailDesign); Window.SetSoftInputMode(SoftInput.AdjustPan); }
источник
Вы можете программно использовать следующий код
android.view.inputmethod.InputMethodManager imm = (android.view.inputmethod.InputMethodManager) context .getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
Спасибо Дипак
источник