Текстовое поле скрыто под клавиатурой в Android webview

Я создал простое приложение для iPhone / Android, содержащее обычный webview. Этот webview вызывает мой веб-сайт.

на моем сайте есть несколько форм с типом ввода=text или textarea. У меня проблема с теми, когда они находятся в нижней части страницы!

1) в моем приложении iPhone клавиатура автоматически появится и переместит текстовое поле в видимую область экрана телефона. Так что делать нечего.

2) но в моем приложении для Android текстовое поле будет оставайтесь на том же месте и в конечном итоге скрыты моей клавиатурой. Поэтому единственный вариант, который есть у пользователей, - это ввести "слепой".

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

7 ответов


вот как я решил проблему. Как сказал венки, вы должны добавить

android:windowSoftInputMode="adjustResize"

к вашему тегу в AndroidManifest.XML-файл. Но в нашем случае этого было недостаточно. Убедитесь, что вы делаете это с вашими взглядами, этого и т. д. Тогда мы, наконец, сделали это.


Я сходил с ума, ничего не работает android:windowSoftInputMode="adjustResize" может помочь, но убедитесь, что ваше приложение не в полноэкранном режиме.

удаление полного экрана для моего приложения решило проблему с изменением размера макета с помощью softkeyboard.

<item name="android:windowFullscreen">false</item>

Это будет работать:

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


несколько вещей, которые я узнал, решая эту проблему --- 1. Стиль темы не должен содержать полноэкранный True 2. Добавить android: windowSoftInputMode= " adjustResize" 3. Удалить android: полосы прокрутки= " нет " - это любой.. . Ура!


Да, была такая же проблема при работе с Webview, моя была с вводом, поданным на modal. Textfield не "фокусировался" над клавиатурой. Решение состояло в том, чтобы задержать вызов функции. Надеюсь, кто-то найдет это полезным.

   $("body").on("click", ".jstree-search-input", function () {  

    setTimeout(function(){ 
        androidScroll(); 
    }, 500);
    });

Как вы можете видеть, он используется для ввода jstree...

   function androidScroll() {
    // Webview focus call (pushes the modal over keyboard)
        $('.control-sidebar-open ').scrollTop($('.control-sidebar-open ')[0].scrollHeight);

}


остерегайтесь, что помимо предложенных ответов

android:windowSoftInputMode="adjustResize"

Is не работать, когда вы находитесь в погружение режим


в моем случае успехи, достигнутые:

  1. добавление ниже для манифеста, webview и фрагмента:

    android:windowSoftInputMode="adjustResize"
    
  2. использование не полноэкранной темы, такой как ниже:

    <style name="AppTheme" parent="android:Theme.Black.NoTitleBar">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowActionBar">false</item>
        <item name="android:windowFullscreen">false</item>
    </style>
    
  3. не использовать ScrollView через WebView.