软件键盘隐藏了Android应用程序中WebView中的html文本字段

时间:2010-04-28 13:42:37

标签: android keyboard webview textfield

我有一个带有WebView的TabHost的Android应用程序。我用它来加载一个特定的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>

我尝试使用android:windowSoftInputMode="adjustResize"配置AndroidManifest.xml文件但没有成功。我还尝试用FrameLayout替换布局中的ScollView,但这导致我的webview在应用程序运行时无限期地增加了大小...这可能是由于某些javascript我已在页面上运行。

我注意到android的网页浏览器有一个漂亮的行为 - 在网页中,弹出软键盘后,网页流畅地滚动,以便用户可以看到可聚焦的文本字段。我怎样才能在我的申请中出现这种行为?

2 个答案:

答案 0 :(得分:8)

我疯了,android:windowSoftInputMode="adjustResize"可能会有所帮助,但请确保您的应用无法全屏显示。

删除我的应用程序的全屏解决了布局使用软键盘调整大小的问题。

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

答案 1 :(得分:4)

我找到了解决此问题的方法。 (在我发布问题后大约一周;我今天只能在stackoverflow中回答...)

我的代码中有一些部分改变了WebView的高度(为TabBar留出空间)。事实证明,当您在WebView上调用setLayoutParams时,即使您设置了android:windowSoftInputMode="adjustResize",它也不会再更改其高度。

我通过将TabBar添加到main.xml布局文件来避免更改WebView高度的需要,初始大小为0.当我增加TabBar的大小时,WebView的大小会自动减小,并保留{{{ 1}}行为。