我有一个带有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的网页浏览器有一个漂亮的行为 - 在网页中,弹出软键盘后,网页流畅地滚动,以便用户可以看到可聚焦的文本字段。我怎样才能在我的申请中出现这种行为?
答案 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}}行为。