Android webview执行loadUrl时隐藏键盘的workround
来源:互联网 发布:淘宝动态评分生效时间 编辑:程序博客网 时间:2024/06/11 13:26
webview执行loadUrl时隐藏键盘的workround
在写webapp的时候,经常需要用JS调用Java方法,java方法执行完毕以后,再回调JS函数来做一些事情,而webview调用js的时候是通过loadUrl方法的,一执行loadUrl就会隐藏软键盘。因为每次loadUrl操作都会调用clearHelpers方法 clearHelpers方法中又会调用clearTextEntry方法,这个方法中会hideSoftKeyboard,那么有没有什么办法不隐藏呢。
有两种办法:
1)重写loadUrl方法,在调用super.loadUrl之前,记下softkeyboard的大小,在执行完super.loadUrl之后把softkeyboard显示出来(想想都疯了。。。不用这种方法)
2)换个角度考虑,一般调用Java方法的时候会打断输入(因为隐藏了键盘),说明在这一段时间应该是较为频繁的调用Java方法,所以这种情况应该是较少时候出现的,那么可以给webview一个javascriptinterface, 将想要传递给js的参数在这个javascriptinterface提供给javascirpt代码调用。
代码如下:
定义一个类:
public class JSInterface {
public String getString(){
return "2" ; //在这里返回参数,这里是最简单的情况。。
}
}
在webview那边:
jsInterface = new JSInterface();
webView.addJavascriptInterface( jsInterface, "JSInterface" );
将这个javascriptinterface暴露给js
在html js文件这边:
setInterval(function() {
counter++;
var js = JSInterface.getString();
document.getElementById( "value").value = document.getElementById("value" ).value + js;
}, 1000);
每隔1秒通过Java取一次数据,更新界面,这样就softkeyboard就不会隐藏了
上面的例子非常简单,可能大多数人觉得没什么用,实际上,在JSInterface.getString方法中可以做很多事情的。
说到了AsyncTask, 需要知道刚开始所有AsyncTask都在一个线程中依次运行,在Android1.6以后改成多线程运行,在Android3.0以后,为了避免一些多线程的问题,又改成了单线程运行,如果先要AsyncTask多线程运行,需要自己建一个Executor,使用AsyncTask.executeOnExecutor方法运行。具体查看http://developer.android.com/reference/android/os/AsyncTask.html#executeOnExecutor(java.util.concurrent.Executor, Params...)
- Android webview执行loadUrl时隐藏键盘的workround
- 关于Android4.4以下版本Webview执行LoadUrl加载js导致键盘隐藏的问题(富文本编辑器)
- Android WebView LoadUrl过程
- webView的loadUrl
- Android Webview的postUrl与loadUrl加载页面
- 为什么webview.loadUrl("javascript:function() ")不执行?
- WebView.loadUrl
- WebView.loadUrl()在真机环境中执行即报错的问题
- android webview loadurl弹出系统浏览器问题
- android webview loadurl弹出系统浏览器问题
- [Android] WebView之loadDataWithBaseUrl()和loadUrl()
- Android键盘的隐藏
- WebView loadurl导致的空指针问题
- WebView使用loadUrl和loadData的区别
- WebView loadUrl 时实时显示一个dialog
- 为什么webview.loadUrl("javascript:alert(234567)")不执行?
- Android 隐藏键盘的方法
- Android WebView with https loadUrl shows blank/empty page
- BlazingTools.Keylogger.Detector.v1.35.Incl.Keygen-BRD
- Chaos.Software.Chaos.Intellect.v4.0.5.2-LAXiTY
- Tagtraum.Industries.beaTunes.v3.5.7.Incl.Keygen-NOY
- Vaadin——写网页不需要html以及js的Java框架
- Android 使WebView支持HTML5 Video(全屏)播放的方法
- Android webview执行loadUrl时隐藏键盘的workround
- 为什么有时候写js的第二个参数无效
- SiSoftware.Sandra.Personal.v2012.10.18.74.Multilingual.Incl.Keygen-BRD
- 1077: Slash
- 1060: NEW RDSP MODE I
- 1053: You are my brother
- ARM程序由于字节对齐引起的问题深入分析
- 1052: Dinner
- 1075: GCC