当从WebView中打开软键盘时,Android窗口不会调整大小/平移。

25
我的问题如下:
  1. 应用程序使用主题android:Theme.NoTitleBar.Fullscreen,只有一个Activity,所有其他视图均为Fragment
  2. 我在ViewPager Fragment中有一个WebView ,它位于ScrollView
  3. HTML内容具有输入字段
  4. 我点击位于WebView底部的输入字段
  5. 软件输入法打开,但Window没有调整/平移

我尝试在我的清单文件中为Activity设置android:windowSoftInputMode="adjustResize"android:windowSoftInputMode="adjustPan"。也在Java中尝试设置其中之一。

我的应用程序中,ScrollView中的普通EditText可以适当地调整平移,以便用户可以看到他/她正在输入的位置。

更新:

如果没有解决方法可以调整窗口,请问有什么方法可以让WebView认为其内容比实际高出半个屏幕高度,这样用户至少可以滚动输入框可见。


你尝试过这样写吗 android:windowSoftInputMode="adjustResize|adjustPan" - Zubair Ahmed
同样的行为,没有任何帮助。 - Niko
Niko,有两个问题...你在使用PhoneGap吗?你的body、html标签的CSS是什么? - Dnaso
这是纯Android,不能百分之百确定HTML,因为它可能会因第三方网站的变化而改变。 - Niko
1
正是我的情况。同样的问题。谢谢你提出这个话题。 - ruX
@Niko:你看到我的答案了吗? - Yash Sampat
4个回答

9

好的,这个问题从一开始就存在,并且Google至今没有解决它,也许永远不会。但是从这个问题中: http://code.google.com/p/android/issues/detail?id=5497 我找到了一个潜在的解决方法:https://dev59.com/XGs05IYBdhLWcg3wJurp#19494006

我已经覆盖了WebView并简单地添加了代码,它能够很好地调整窗口大小。但是由于不同的屏幕高度可能需要进行一些调整,所以该代码不总是有效的,但在许多情况下它可以正常工作,因为这是我见过的唯一可行的解决方案。


4
尝试在ScrollView中使用android:isScrollContainer="false"。根据Android文档,如果视图将用作滚动容器,则设置此项,这意味着可以调整其大小以缩小其整个窗口,以便为输入法留出空间。希望这将解决您的问题。

我尝试将ScrollView的设置设置为true,并设置android:windowSoftInputMode="adjustResize"标志。没有起作用,还尝试将ScrollView的设置设置为false,并将WebView的设置设置为true,但没有任何区别。 - Niko

2
这是我们为使其正常工作所做的事情。 由于FLAG_FULLSCREEN活动的设计,当键盘可见时,它不允许调整视图,因此我们采用了自定义键盘通知监听器和Webview的OnTouch监听器的方法。 KeyboardHelper.java - 用于查找键盘的可见性 Webview全屏活动调整 - 根据通知和触摸点调整Webview。
希望能对您有所帮助!

1
感谢您的想法。我根据我的需求修改了您的代码,但总体来说,这个解决方案是可行的。 - Lanitka

1

我的代码在键盘打开时也无法调整大小。

<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/simple_webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scrollbars="none"
    />

我删除了(android:scrollbars="none")语句,然后它就起作用了!这意味着应用程序只有在容器可滚动时才会调整大小。因此,默认情况下,WebView容器具有可滚动区域。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接