Mam aplikację na Androida, która jest TabHost z WebView. Używam go do załadowania określonego pliku html, który ma pole tekstowe w jego dolnej części.Pole tekstowe html w WebView w aplikacji Android jest ukryte za pomocą miękkiej klawiatury
Po dotknięciu pola tekstowego HTML miękka klawiatura wyskakuje i ukrywa pole tekstowe, dzięki czemu nie widzę tego, co wpisałem.
Oto układ:
<?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>
Próbowałem skonfigurować plik AndroidManifest.xml z android:windowSoftInputMode="adjustResize"
bez powodzenia. Próbowałem również zastąpić FrameLayout
w moim układzie za pomocą ScollView
, ale to spowodowało, że mój webview
zwiększał rozmiar w nieskończoność, gdy aplikacja jest uruchomiona. Może to być spowodowane niektórymi javascriptami, które uruchomiłem na stronie.
Zauważyłem, że przeglądarka internetowa Androida ma fajne zachowanie - na stronie internetowej, po wyświetleniu miękkiej klawiatury, strona internetowa przewija się płynnie, dzięki czemu pole tekstowe z możliwością ustawiania ostrości jest widoczne dla użytkownika. Jak mogę zachować takie zachowanie w mojej aplikacji?
Sposób obejścia tego problemu może zostać zgłoszony, gdy pojawi się softkey, a następnie ręcznie zmienić rozmiar widoku. Próbowałem wdrażanie onCreateInputConnection (EditorInfo) we wszystkich moich klasach układu, ale nie można uzyskać powiadomienia, gdy pojawi się klawiatura. Pomoc! – gardenofwine