安卓WebView键盘长时间不弹出以输入值

9
我有一个内嵌WebView的Android 3.0应用程序。WebView打开了一个使用Java脚本的网站。打开网站工作正常。但是每当我点击文本框时,键盘都不会出现。
我已经尝试过Tapping form field in WebView does not show soft keyboard,但没有成功。键盘似乎很快就出现,然后消失了。从我的角度来看,这是由于某些JavaScript引起的。这是其中一个输入字段的HTML代码:
<input id="ToolbarOkCode" class="urEdf2TxtEnbl" type="Text" style="text-align:;width:150px;" value="" name="ToolbarOkCode" lsevents="{'Change':[{'ClientAction':'none'},{'type':'TOOLBARINPUTFIELD'}],'Enter':[{'ClientAction':'submit','PrepareScript':'return its.XControlSubmit();','ResponseData':'delta','TransportMethod':'partial'},{'type':'TOOLBARINPUTFIELD','~XRequest':'X'}]}" lsdata="{0:'',1:'',2:'',3:20,4:200,5:false,6:false,7:true,8:false,9:false,10:'STRING',11:'F4LOOKUP',12:'150px',13:'LEFT',14:false,15:'',16:false,17:false,18:false,19:'AUTO',20:true,21:'NONE',22:'MM/dd/yyyy',23:false,24:'',25:'',26:false,27:false,28:'',29:'NORMAL',30:1,31:false,32:0,33:0}" ct="I" autocomplete="off" ti="0" tabindex="0" maxlength="200">

我在我的项目中遇到了完全相同的问题,该项目包含许多视图,根据应用程序的状态获得/失去可见性。当在只有一个WebView的简单活动上测试解决方案“在WebView中点击表单字段不显示软键盘”时,问题得到解决。我尝试删除所有其他视图的焦点,但这个问题仍然存在。现在正在提供赏金... - Rotemmiz
2个回答

5
我找到了解决我的问题的方法,但是它相当具体,我希望它能在某个时候帮助到某个人...
我扩展了WebViewClient并覆盖了其中的几个函数。当我在onLoadResource()上加载了一个专有的javascript:时,我的问题开始出现。由于某种原因,这样做引起了整个键盘异常。我将脚本移动到onPageFinished()上运行,然后WebView再次正常工作。

嗨,rotemmiz。你可以分享一下你的代码吗?非常感激!来自奥地利的问候! - Martin
嗨,马丁,如果我的代码可以帮助到别人,我很愿意分享。但是我遇到的奇怪键盘行为是由于我在应用程序中进行了几个非常特定的操作(包括在加载webView中的每个站点时运行JavaScript代码)。尝试发布一个包含代码的问题,我会看看是否能够识别出这个模式的任何有用信息。 - Rotemmiz

0

我已经使用了你的代码,并尝试在Android 2.2上运行。它可以正常工作并显示键盘以输入值。我将发布我运行的完整代码

        String str="<input id=\"ToolbarOkCode\" class=\"urEdf2TxtEnbl\" type=\"Text\" style=\"text-align:;width:150px;\" value=\"d\" " +
            " name=\"ToolbarOkCode\" lsevents=\"{'Change':[{'ClientAction':'none'},{'type':'TOOLBARINPUTFIELD'}],"+
        "'Enter':[{'ClientAction':'submit','PrepareScript':'return its.XControlSubmit();','ResponseData':'delta','TransportMethod':'partial'},"+
        "{'type':'TOOLBARINPUTFIELD','~XRequest':'X'}]}\" lsdata=\"{0:'',1:'',2:'',3:20,4:200,5:false,6:false,7:true,8:false,9:false,10:'STRING',11:"+
        "F4LOOKUP',12:'150px',13:'LEFT',"+
        "14:false,15:'',16:false,17:false,18:false,19:'AUTO',20:true,21:'NONE',22:'MM/dd/yyyy',23:false,24:'',25:'',26:false,27:false,28:'',"+
        "29:'NORMAL',30:1,31:false,32:0,33:0}\"" +
        "ct=\"I\" autocomplete=\"off\" ti=\"0\" tabindex=\"0\" maxlength=\"200\">";
   WebView webView=new WebView(this);
   webView.setFocusableInTouchMode(true);
   webView.loadData(str, "Text/html","utf-8");
   setContentView(webView);

希望这能对你有所帮助 :)

有关更多信息,请参见此问题 - https://dev59.com/yG025IYBdhLWcg3wwo2l - Tofeeq Ahmad

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