gpt4 book ai didi

Android编程实现webview执行loadUrl时隐藏键盘的workround效果

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Android编程实现webview执行loadUrl时隐藏键盘的workround效果由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例讲述了Android编程实现webview执行loadUrl时隐藏键盘的workround效果。分享给大家供大家参考,具体如下:

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代码调用.

代码如下:

定义一个类:

?
1
2
3
4
5
public class JSInterface {
   public String getString(){
     return "2" ; //在这里返回参数,这里是最简单的情况。。
   }
}

在webview那边:

?
1
2
jsInterface = new JSInterface();
webView.addJavascriptInterface( jsInterface, "JSInterface" );

将这个javascriptinterface暴露给js 。

在html js文件这边:

?
1
2
3
4
5
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程序设计有所帮助.

最后此篇关于Android编程实现webview执行loadUrl时隐藏键盘的workround效果的文章就讲到这里了,如果你想了解更多关于Android编程实现webview执行loadUrl时隐藏键盘的workround效果的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com