2017-09-13 257 views
1

我有一块继承的代码,我不能为我的生活弄清楚如何去调试这个问题。Android滚动Webview Editable到光标 - 软键盘

我有一个带有webview的线性布局。 web视图里面是设置一个div:

style="overflow-y: scroll; -webkit-overflow-scrolling:touch" contenteditable="true". 

但是,如果在WebView中的文本是屏幕的全高,当我在文字的下方点击,键盘显示了又视图不滚动到光标点。事实上,光标图标显示在softkeybaord的顶部。

现在,如果我尝试这是一个示例应用程序具有相同的div标签,它工作得很好。我无法弄清楚为什么遗留代码不滚动。他们都没有围绕他们的scrollview,但与webview的简单应用程序的立场工作得很好。

的DIV的类是:

.messageBody { 
     word-wrap: break-word; 
     -webkit-nbsp-mode: space; 
     -webkit-line-break: after-white-space; 
     height: 100%; 
     min-height: 200px; 
     } 

UPDATE: 所以如果我有

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:roundIcon="@mipmap/ic_launcher_round" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity" 
     android:configChanges="orientation|screenSize|keyboard|keyboardHidden" 
     android:windowSoftInputMode="adjustPan"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

看来该 “机器人:windowSoftInputMode =” adjustPan”是导致键盘覆盖web视图,并且光标被置于softkeyboard的顶部。如果我参加了adjustPan它似乎工作。然而,在遗留代码,这并不似乎有所作为,所以我想了解如何看什么都属性位于o中的遗留代码中刻申将其与此示例应用程序,我可以重新在错误。

更新映像

网页视图,地方指针悬停在文本的最后几行字一个,看softkeyboard开放和光标插入符号在键盘上方,视图不滚动。 Image Before Click

<FrameLayout 
      android:id="@+id/composer_container" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:windowSoftInputMode="adjustPan"/> 
+0

所以你说你尝试过了,它的工作,但尝试项目不包含任何文字? – Steven

+0

对不起,它包含3段文字,以便它滚动得很好。但是,如果我向下滚动然后点击要编辑的文本,软键盘将显示在Web视图的顶部。它就像没有调整大小,光标不会将文本移动到softkeypad的上方(认为autopan或resize会做但不是它)。 – justdan0227

+0

你有.messageBody的宽度吗?您是否尝试过使用其他css样式,然后使用-webkit来做同样的事情?由于一些css样式在android webview – Steven

回答

2
  • 我已经改变了的minSdkVersion因为我没有尝试过,我 设备上。

  • 我已将CDN更改为本地加载,因为有时CDN
    未在webview中加载。

  • 我已经改变了方向为纵向。

  • 我评论过你的Android配置。

  • 我去评论你的引导类的容器。我有
    将css和js放在一个单独的文件中。

  • 我已经在改变HTML脚本的位置,因为
    js文件加载速度更快,当你把它们放到body标记之后。

我创造了这个回购与变化:https://github.com/Steven0213/bootstrapExample

让我知道如果你需要更多的改进,或者是不正确的

+0

所以你给我的解决方案确实适用于示例,但它仍然不会调整我们遗留代码中的webview消息体的大小。我认为这可能与我们使用碎片然后用包含上述消息体的composition.html文件替换xml文件的有效区域有关。我认为Android不会通知显示键盘的webview片段,因此它可以将webview窗口的大小调整为只有5或6行,然后在键入时滚动。不确定该从哪里出发.. – justdan0227

+0

那么您的意思是代码在您需要的应​​用程序中无法使用?我真的不明白你的意思是调整webview窗口的大小吗? – Steven

+0

所以很抱歉的混淆。该视图是一个“简单的”回复窗口,其中顶部有“TO,SUBJECT”,后面跟着一个Web视图,该视图呈现文本并占用屏幕的剩余2/3。如果随后打开键盘(因为webview只是一个可编辑的消息主体),softkeyboard覆盖webview并且webview不滚动,如果您单击文本的下半部分也不会捕捉光标调出键盘,从而隐藏光标。 – justdan0227