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

代码如下:

定义一个类:

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

时间: 2015-10-28

Android键盘自动弹出解决方法分析

本文实例分析了Android键盘自动弹出解决方法.分享给大家供大家参考,具体如下: 1.在: 复制代码 代码如下: activity android:name=".Uninstaller" android:label="@string/app_name" android:windowSoftInputMode="adjustPan" 加入了: 复制代码 代码如下: android:windowSoftInputMode="adjustP

Android键盘显示与隐藏代码

Java代码 复制代码 代码如下: InputMethodManager imm = (InputMethodManager)getSystemService(SendActivity.this.INPUT_METHOD_SERVICE); //显示键盘 imm.showSoftInput(editText, 0); //隐藏键盘 imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);

C#隐藏控制台键盘输入的方法

本文实例讲述了C#隐藏控制台键盘输入的方法.分享给大家供大家参考.具体如下: using System; namespace RobvanderWoude { class HideInput { static int Main( string[] args ) { try { bool clearscreen = false; if ( args.Length > 1 ) { return WriteError( "Too many command line arguments"

解决ios模拟器不能弹出键盘问题的方法

其实这个问题,多多少少的新人都遇到过,主要可能是我们误使用快捷键切换造成的!   解决办法:如上图:切换模拟器到前台,画红线的第一个意思是连接实体键盘,选中的话就是在模拟器上我们直接可以使用外接键盘进行输入:第二行画横线的意思就是使用软键盘!如果模拟器不能弹出键盘,我们可以手动去掉第一行画红线的选中状态,或者直接使用快捷键commod + k 切换,如果需要使用实体键盘,选中第一行红线的选项,或者使用快捷键shift + commod +k 切换! 问题就这样解决了,希望这篇短小的文章对大家的学

键盘弹出时会覆盖文本框怎么解决

在一些网站登陆界面,我们经常会见到,键盘的出现与隐藏操作,那么基于代码是如何实现的呢?下面小编写了具体代码介绍,特此分享到我们平台,供大家参考 先给大家展示下效果图: 具体代码如下所示: #import "ViewController.h" #import "UIView+FrameExtension.h" // 可以自己写,以后用着方便 #define kDeviceHeight [UIScreen mainScreen].bounds.size.height @

解析android中隐藏与显示软键盘及不自动弹出键盘的实现方法

1.//隐藏软键盘    ((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(WidgetSearchActivity.this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 2.//显示软键盘,控件ID可以是EditText,TextView    ((InputMethodMa

Android实现弹出键盘的方法

本文实例讲述了Android实现弹出键盘代码,是一个非常实用的功能.代码非常简洁.分享给大家供大家参考. 具体功能代码如下: Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { InputMethodManager m = (InputMethodManager) editText.getContext().getSystemService(Context.INPUT_

Android popupWindow弹出窗体实现方法分析

本文实例讲述了Android popupWindow弹出窗体实现方法.分享给大家供大家参考,具体如下: 1. 建立popupwindow显示的布局页面(普通的view任意布局) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_

android避免弹出软键盘遮盖listview的简单方法

做开发的时候,我们常常把listview放中间,然后底部放置一个edittext控件,这样导致editext控件获得焦点的时候,输入法弹出,Edittext控件上移,挡住了listview的部分数据,这样不太美观.所以,我们需要让listview也跟着上移,所以需要: 方法一:在xml文件中,设置listview属性时候加上这句就ok了android:transcriptMode="normal": 方法二:在程序中加入语句: listView.setTranscriptMode(Li

Android实现背景可滑动登录界面 (不压缩背景弹出键盘)

废话不多说,先看下实现后的效果: 实现思路 看到上边 gif 图的效果,主要列举一下实现过程过程中遇到的难点. 如何使键盘弹出时候不遮挡底部登录布局: 当键盘弹出的时候如何不压缩背景图片或者背景延伸至「屏幕以外」: 从 「 windowSoftInputMode 」 说起 相信大家都清楚,Google 官方提供给开发者控制软键盘显示隐藏的方法不多,「windowSoftInputMode」算是我们可控制的软键盘弹出模式的方法之一.关于其属性的说明Google 官方和网上的教程说了很多,他的属性值

Android EditText默认不弹出输入法的实现方法

一.Android EditText默认不弹出输入法的办法: 1. 在AndroidManifest.xml中将需要默认隐藏键盘的Activity中添加属性即可(常用此方法) android:windowSoftInputMode="adjustUnspecified|stateHidden" android:configChanges="orientation|keyboardHidden" 例如: <activity android:name="

Android编程开发之TextView单击链接弹出Activity的方法

本文实例讲述了Android编程开发之TextView单击链接弹出Activity的方法.分享给大家供大家参考,具体如下: 话不多说直接上码: 核心源码: package com.example.textview4; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.text.SpannableString; import android.tex

Android弹出窗口实现方法

本文实例讲述了Android弹出窗口实现方法.分享给大家供大家参考,具体如下: 直接上代码: /** * 弹窗--新手指引 * @param cxt * @param id 资源编号 * @create_time 2011-7-27 下午05:12:49 */ public static void displayWindow(Context cxt, int id) { final TextView imgTV = new TextView(cxt.getApplicationContext()

Android编程实现AlertDialog自定义弹出对话框的方法示例

本文实例讲述了Android编程实现AlertDialog自定义弹出对话框的方法.分享给大家供大家参考,具体如下: 弹出对话框,显示自定义的布局文件 弹出对话框提示设置密码或登录密码 private void showSetPasswordDialod(){ View dialogView=mInflater.inflate(R.layout.protect_first_dialog, null); AlertDialog.Builder builder=new AlertDialog.Buil

详解Android 8.1.0 Service 中 弹出 Dialog的方法

场景:在Service 中开启线程下载升级包,当下载完系统升级包,弹出一个Dialog 提示用户. 注意,Android 系统版本不一样,可能会有不一样的表现.当前是基于 Android 8.1.0 的 Service 中弹 Dialog. 首先,就是要在功能清单列表中声明权限,以下两个都必须声明: <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/><!--这行代码必须存在,