Android: Как я могу помешать мягкой клавиатуре выдвинуть мой взгляд?

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

Кто-нибудь еще сталкивается с этой проблемой? Знаете, как это исправить?

Ответ 1

Вы можете просто переключить свой флаг Activity windowSoftInputMode на adjustPan в файле AndroidMainfest.xml внутри тега активности.

Проверьте официальную документацию для получения дополнительной информации.

<activity
   ...
   android:windowSoftInputMode="adjustPan"> 
</activity>

Ответ 2

Ни один из ответов не работал у меня, но это сделало трюк:

android:windowSoftInputMode="adjustNothing"

Ответ 3

В моем случае причина, по которой кнопки были выдвинуты, заключалась в том, что вид над ними был ScrollView, и он обрушился с кнопками, выдвинутыми вверх над клавиатурой, независимо от того, какое значение android:windowSoftInputMode я устанавливал.

Мне удалось избежать того, что нижняя строка кнопок была нажата мягкой клавиатурой, установив android:isScrollContainer="false" на ScrollView, который находится над кнопками.

Ответ 4

Вы можете попытаться добавить этот атрибут динамически, поместив следующий код в метод onCreate вашей деятельности:

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

Это сработало для меня, а именно:

android:windowSoftInputMode="adjustPan"

техника его подводит.

Ответ 5

Эти ответы здесь мне не помогли. Поэтому я попробовал это:

android:windowSoftInputMode="adjustResize"

Это работало как шарм. Теперь заголовок моего приложения не исчезает. Его более гладкая.

Ответ 6

Чтобы сделать это программно в фрагменте, вы можете использовать следующий код

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

Поместите это в onResume()

Ответ 7

Добавлена ​​только одна строка...

Добавьте android:windowSoftInputMode="stateHidden|adjustPan" в требуемую активность вашего manifest file.

Я только что решил:):)

Ответ 8

Для будущих читателей.

Мне нужен конкретный контроль над этой проблемой, поэтому я это сделал:

Из фрагмента или действия скройте другие виды (которые не нужны, когда клавиатура встала), , затем восстановите их, чтобы решить эту проблему: p >

            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);

                    }
                }
            });

Ответ 9

Пользователи xamarin добавят этот код в атрибут Activity класса MainActivity,

WindowSoftInputMode =Android.Views.SoftInput.AdjustNothing

или вы можете добавить этот код Window.SetSoftInputMode(Android.Views.SoftInput.AdjustNothing) к методу OnCreate класса MainActivity.

Ответ 10

Пока ответы не помогли мне, так как у меня есть кнопка и поле textInput (рядом) под текстовым элементом, который скрывал клавиатуру, но это решило мою проблему:

android:windowSoftInputMode="adjustResize"

Ответ 11

android:windowSoftInputMode="stateHidden|adjustNothing"

Этот код работает.

Ответ 12

Добавьте следующий код в "действие" файла манифеста.

android:windowSoftInputMode="adjustResize"

Ответ 13

Это было лучшее, что сработало для меня

android:windowSoftInputMode="adjustNothing"

Попробуйте!

Ответ 14

Это работало для меня

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

Ответ 15

Для просмотра прокрутки:

если после добавления android:windowSoftInputMode="stateHidden|adjustPan" в ваш манифест Android и по-прежнему не работает.

Это может быть затронуто, потому что, когда клавиатура появляется, она будет в виде прокрутки, и если ваша кнопка/любые объекты не находится в вашем прокрутке, объекты будут следовать за клавиатурой и перемещать ее положение.

Проверьте свой xml, где находится ваша кнопка, и убедитесь, что она находится под вашим прокруткой. Найдите скобу, а не из нее.

Надеюсь, что это поможет.: D

Ответ 16

Ну, я смотрел эти ответы, но в моем случае я попал в одну и ту же проблему и нашел убежище благодаря очень удобному и простому решению, которое включает в себя очень маленький невинный атрибут в вашем теге Scrollview, находящемся в вашем XML файле. Это

android:isScrollContainer="false"

Удачи!

Ответ 17

В моем случае мне нужно, чтобы клавиатура оставалась скрытой, и сразу после нажатия кнопки мой макет должен быть настроен, поэтому я просто добавил эту команду в манифест, и он получил супер право.

android:windowSoftInputMode="stateHidden|adjustResize"

Ответ 18

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

Этот работает для меня.

Ответ 19

Когда вы хотите скрыть вид при открытой клавиатуре.

Добавьте это в свою активность в файле манифеста

android:windowSoftInputMode="stateHidden|adjustPan"

Ответ 20

Основное окно операции не будет изменяться, чтобы освободить место для мягкой клавиатуры. Скорее, содержимое окна будет автоматически разворачиваться таким образом, чтобы текущий фокус никогда не скрывался клавиатурой, и пользователи всегда могут видеть, что они набирают.

android:windowSoftInputMode="adjustPan"

Это может быть лучшим решением для желаемого.

Ответ 21

Попробуйте использовать это:

android:windowSoftInputMode="stateHidden|adjustPan"

Ответ 22

Этот код может вам помочь. Используйте его в методе oncreate.

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

Ответ 23

Включите в свой файл манифеста под действие, которое вы хотите отобразить. Но убедитесь, что не используете полноэкранную активность.

android:windowSoftInputMode="adjustPan"

Ответ 24

@manifest в вашей деятельности:

android:windowSoftInputMode="stateAlwaysHidden|adjustPan"