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

所属分类: 软件编程 / Android 阅读数: 276
收藏 0 赞 0 分享

本文实例讲述了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代码调用。

代码如下:

定义一个类:

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程序设计有所帮助。

更多精彩内容其他人还在看

Android样式和主题之选择器的实例讲解

今天小编就为大家分享一篇关于Android样式和主题之选择器的实例讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

Android应用动态修改主题的方法示例

今天小编就为大家分享一篇关于Android应用动态修改主题的方法示例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

Flutter 网络请求框架封装详解

这篇文章主要介绍了Flutter 网络请求框架封装详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Flutter倒计时/计时器的实现代码

这篇文章主要介绍了Flutter倒计时/计时器的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android使用google breakpad捕获分析native cash

这篇文章主要介绍了Android使用google breakpad捕获分析native cash 的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

详解Flutter WebView与JS互相调用简易指南

这篇文章主要介绍了详解Flutter WebView与JS互相调用简易指南,分为JS调用Flutter和Flutter调用JS,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android开发实现ListView和adapter配合显示图片和文字列表功能示例

这篇文章主要介绍了Android开发实现ListView和adapter配合显示图片和文字列表功能,涉及Android使用ListView结合adapter适配器实现图文显示功能相关的布局、解析、权限控制等操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

Android文字基线Baseline算法的使用讲解

今天小编就为大家分享一篇关于Android文字基线Baseline算法的使用讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

Flutter自定义实现神奇动效的卡片切换视图的示例代码

这篇文章主要介绍了Flutter自定义实现神奇动效的卡片切换视图的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android实现自定义滑动刻度尺方法示例

这篇文章主要给大家介绍了关于Android实现自定义滑动刻度尺的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享
查看更多