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

 更新时间:2015年10月30日 14:14:02   作者:勇往直前的胖子  
这篇文章主要介绍了Android编程实现webview执行loadUrl时隐藏键盘的workround效果,较为详细的分析了执行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代码调用。

代码如下:

定义一个类:

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 WindowManger的层级分析详解

    Android WindowManger的层级分析详解

    这篇文章主要介绍了Android WindowManger的层级分析详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • Android 开发中线程的分析

    Android 开发中线程的分析

    这篇文章主要介绍了Android 开发中线程的分析的相关资料,需要的朋友可以参考下
    2017-04-04
  • android开机自启动apk的方法

    android开机自启动apk的方法

    今天小编就为大家分享一篇android开机自启动apk的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • Android Touch事件分发深入了解

    Android Touch事件分发深入了解

    这篇文章主要为大家详细介绍了Android Touch事件分发,内容很详细,感兴趣的朋友可以参考一下
    2016-04-04
  • Android 6.0 蓝牙搜索不到设备原因,MIUI权限申请机制方法

    Android 6.0 蓝牙搜索不到设备原因,MIUI权限申请机制方法

    今天小编就为大家分享一篇Android6.0 蓝牙搜索不到设备原因,MIUI权限申请机制方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • 解决TabLayout 不显示下划线问题

    解决TabLayout 不显示下划线问题

    这篇文章主要介绍了解决TabLayout 不显示下划线问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Android编程之下拉菜单Spinner控件用法示例

    Android编程之下拉菜单Spinner控件用法示例

    这篇文章主要介绍了Android编程之下拉菜单Spinner控件用法,结合简单实例形式分析了Android下拉菜单Spinner的布局与功能相关实现技巧,需要的朋友可以参考下
    2017-07-07
  • Android 进程间通信实现原理分析

    Android 进程间通信实现原理分析

    只有你允许客户端从不同的应用程序为了进程间的通信而去访问你的service,以及想在你的service处理多线程,下面为大家详细介绍下
    2013-06-06
  • 详解Android ViewCompat的作用

    详解Android ViewCompat的作用

    这篇文章主要介绍了详解Android ViewCompat的作用的相关资料,需要的朋友可以参考下
    2017-07-07
  • Kotlin的::符号怎么用

    Kotlin的::符号怎么用

    本文主要介绍了Kotlin的::符号怎么用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01

最新评论