Android: Как я могу предотвратить мягкую клавиатуру от нажатия моего взгляда вверх?
У меня есть вертикальный выдвижной ящик в нижней части моего приложения. Когда мягкая клавиатура открывается, она выдвигает вкладку для ящика вверх, поэтому она сидит на клавиатуре. Я действительно хочу, чтобы он оставался в нижней части экрана, становясь скрытым, когда клавиатура отображается.
кто - нибудь еще столкнулся с этой проблемой? Знаете, как это исправить?
23 ответа:
вы можете просто переключить флаг windowSoftInputMode своей деятельности на "adjustPan" в AndroidMainfest.xml-файл insisde ваш тег активности. Проверьте официальная документация для получения дополнительной информации.
<activity ... android:windowSoftInputMode="adjustPan"> </activity>
ни один из ответов не работал для меня, но это сделало трюк:
android:windowSoftInputMode="adjustNothing"
в моем случае причина, по которой кнопки были нажаты, заключалась в том, что вид над ними был
ScrollView
, и он рухнул с кнопками, нажатыми над клавиатурой независимо от того, какое значениеandroid:windowSoftInputMode
Я сидел.я смог избежать моего нижнего ряда кнопок, толкаемых вверх с помощью мягкой клавиатуры, установив
android:isScrollContainer="false"
наScrollView
который сидит над кнопками.
вы можете попробовать добавить этот атрибут динамически, поместив следующий код в
onCreate
способ вашей деятельности:getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
Это сработало для меня, а именно:
android:windowSoftInputMode="adjustPan"
не было.
эти ответы здесь мне не помогли. Поэтому я попробовал это:
android:windowSoftInputMode="adjustResize"
это сработало как шарм, теперь заголовок моего приложения не исчезает. Это более гладко.
для будущих читателей.
Я хотел конкретный контроль над этой проблемой, так что это то, что я сделал:
из фрагмента или действия,скрыть другие виды (это не нужно, пока клавиатура вверх),затем восстановить их решить эту проблему:
rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect r = new Rect(); rootView.getWindowVisibleDisplayFrame(r); int heightDiff = rootView.getRootView().getHeight() - (r.bottom - r.top); if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard... //ok now we know the keyboard is up... view_one.setVisibility(View.GONE); view_two.setVisibility(View.GONE); }else{ //ok now we know the keyboard is down... view_one.setVisibility(View.VISIBLE); view_two.setVisibility(View.VISIBLE); } } });
для пользователей xamarin добавьте этот код в атрибут Activity класса MainActivity,
WindowSoftInputMode =Android.Views.SoftInput.AdjustNothing
или вы можете добавить этот код
Window.SetSoftInputMode(Android.Views.SoftInput.AdjustNothing)
к методу OnCreate класса MainActivity.
для этого программно во фрагменте можно использовать следующий код
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
поместите это в onResume ()
до сих пор ответы не помогли мне, поскольку у меня есть кнопка и поле textInput (бок о бок) под textView, который продолжал скрываться клавиатурой, но это решило мою проблему:
android:windowSoftInputMode="adjustResize"
только одна строка, которая будет добавлена...
добавить
android:windowSoftInputMode="stateHidden|adjustPan"
в нужном активностьmanifest file
.Я только что решена :) :)
главное окно действия не будет изменяться, чтобы освободить место для мягкой клавиатуры. Скорее всего, содержимое окна будет автоматически перемещено так, чтобы текущий фокус никогда не был скрыт клавиатурой, и пользователи всегда могут видеть, что они печатают.
android:windowSoftInputMode="adjustPan"
Это может быть лучшим решением для того, чего вы желали.
Для Просмотра Прокрутки:
если после добавления
android:windowSoftInputMode="stateHidden|adjustPan"
в вашем Android Манифеста и до сих пор не работает.это может быть затронуто, потому что при появлении клавиатуры она будет в виде прокрутки, и если ваша кнопка/какие-либо объекты не находятся в вашем виде прокрутки, то объекты будут следовать за клавиатурой и перемещать ее положение.
проверьте свой xml, где находится ваша кнопка, и убедитесь, что она находится под вашей скобкой прокрутки, а не вне ее.
Надежда это помогает. : D
Ну, я смотрел эти ответы, но в моем случае я попал в ту же проблему и получил убежище через очень удобное и простое решение, которое включает в себя размещение очень маленького невинного атрибута в вашем теге Scrollview, находящемся в вашем xml-файле. То есть
android:isScrollContainer="false"
удачи!
этот код может помочь вам. Используйте его в вашем
oncreate
метод.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
включить в файл манифеста в разделе Действия, которые вы хотите отобразить .Но убедитесь, что вы не используете полноэкранную активность
android:windowSoftInputMode="adjustPan"
в моем случае мне нужна была клавиатура, чтобы оставаться скрытым и сразу после нажатия кнопки мой макет должен быть скорректирован, поэтому я просто добавил эту команду в манифесте, и он получил супер право.
android:windowSoftInputMode="stateHidden|adjustResize"