текстовое поле HTML в веб-представлении в приложении Android скрыто программируемой клавиатурой

У меня есть приложение Android, которое является TabHost с веб-представлением. Я использую его для загрузки определенного файла HTML, который имеет текстовое поле в его нижней части.

Когда я касаюсь текстового поля HTML, программируемая клавиатура открывается и скрывает текстовое поле, так, чтобы я не видел то, что я ввел.

Вот расположение:

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/main"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
        <TabWidget
            android:focusableInTouchMode="false"
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="63dp" />
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/layout"
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >
                <WebView
                    android:id="@+id/webview"
                    android:layout_width="fill_parent" 
                    android:layout_height="fill_parent"
                    android:layout_weight="1" />
            </LinearLayout>
        </FrameLayout>      
    </LinearLayout>
</TabHost>

Я попытался настроить файл AndroidManifest.xml с android:windowSoftInputMode="adjustResize" без успеха. Я также попытался заменить FrameLayout в моем расположении с ScollView, но это вызвало мой webview увеличиться в размере неограниченно долго, когда приложение работает.. это может произойти из-за некоторого JavaScript, у меня есть работа страницы.

Я заметил, что веб-браузер андроида имеет изящное поведение - в веб-странице, после того, как программируемая клавиатура открывается, прокрутки веб-страницы гладко так, чтобы focusable текстовое поле было видимо пользователю. Как у меня может быть этот вид поведения в моем приложении?

7
задан Donald Duck 18 June 2017 в 12:50
поделиться

1 ответ

Я нашел решение этой проблемы. (примерно через неделю после того, как я разместил вопрос; мне нужно было только ответить в stackoverflow сегодня ...)

В моем коде были фрагменты, которые меняли высоту WebView (чтобы было место для TabBar). Оказывается, когда вы вызываете setLayoutParams в WebView, он больше не меняет свою высоту, даже если у вас установлен android: windowSoftInputMode = "adjustResize" .

Я избежал необходимости изменять высоту WebView, добавив TabBar в файл макета main.xml с начальным размером 0. Когда я увеличиваю размер TabBar, размер WebView автоматически уменьшается, и он сохраняет android: windowSoftInputMode = "adjustResize" поведение.

4
ответ дан 6 December 2019 в 21:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: