工具类,拿走就能用:

import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.graphics.Rect;
import android.os.Build;
import android.util.DisplayMetrics;
import android.view.inputmethod.InputMethodManager;/*** Created by ChenboCui on 2018/6/1.*/
public class SoftKeyboardUtils {/*** 隐藏或显示软键盘* 如果现在是显示调用后则隐藏 反之则显示* @param activity*/public static void showORhideSoftKeyboard(Activity activity){InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);}/*** 强制显示软键盘* @param activity*/public static void showSoftKeyboard(Activity activity){InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);imm.showSoftInput(activity.getWindow().getDecorView(),InputMethodManager.SHOW_FORCED);}/*** 强制隐藏软键盘* @param activity*/public static void hideSoftKeyboard(Activity activity){InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);imm.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0); //强制隐藏键盘}/*** 调用系统方法 强制隐藏软键盘* @param activity*/public static void hideSystemSoftKeyboard(Activity activity){((InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);}/*** 判断软键盘是否显示方法* @param activity* @return*/public static boolean isSoftShowing(Activity activity) {//获取当屏幕内容的高度int screenHeight = activity.getWindow().getDecorView().getHeight();//获取View可见区域的bottomRect rect = new Rect();//DecorView即为activity的顶级viewactivity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);//考虑到虚拟导航栏的情况(虚拟导航栏情况下:screenHeight = rect.bottom + 虚拟导航栏高度)//选取screenHeight*2/3进行判断return screenHeight*2/3 > rect.bottom+getSoftButtonsBarHeight(activity);}/*** 底部虚拟按键栏的高度* @return*/@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)private static int getSoftButtonsBarHeight(Activity activity) {DisplayMetrics metrics = new DisplayMetrics();//这个方法获取可能不是真实屏幕的高度activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);int usableHeight = metrics.heightPixels;//获取当前屏幕的真实高度activity.getWindowManager().getDefaultDisplay().getRealMetrics(metrics);int realHeight = metrics.heightPixels;if (realHeight > usableHeight) {return realHeight - usableHeight;} else {return 0;}}
}}

我一般都是这样使用:

//点击返回按钮时判断软键盘状态,若软键盘开启则关闭、若软键盘关闭就直接退出
if (SoftKeyboardUtils.isSoftShowing(RenActivity.this)){SoftKeyboardUtils.showORhideSoftKeyboard(RenActivity.this);
}else {onBackPressed();
}

如果你调用强制显示\隐藏软键盘没反应,试试这样:

   et.postDelayed(new Runnable() {@Overridepublic void run() {InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);imm.showSoftInput(et.getEditText(),InputMethodManager.SHOW_FORCED);}},500);

et就是布局中的需要使用软键盘的控件,像edittext;关闭软键盘也是一样;

Android手动控制软键盘的开启和关闭,判断软键盘是否显示;相关推荐

  1. 笔记本电脑开启和关闭自带键盘(Win10)

    文章目录 1.以管理员身份运行命令提示符(CMD) 2.执行以下命令 1.以管理员身份运行命令提示符(CMD) 2.执行以下命令 关闭:sc config i8042prt start= disabl ...

  2. Android判断软键盘 输入法 是否显示

    文章目录 1.简介 2.判断原理 3.功能实现 3.文件参考 1.简介 1)判断界面上是否显示出软键盘 2)有软键盘隐藏,没有显示 2.判断原理 根据判断整体可见区域和整体界面的位置 3.功能实现 c ...

  3. 打开、关闭系统软键盘(触摸屏)

    开启.关闭系统软键盘 调用头文件 #include <Windows.h> #pragma comment(lib, "user32.lib") void OpenSy ...

  4. 系统屏幕键盘(软键盘)打开和关闭

    系统屏幕键盘(软键盘)打开和关闭 // 打开软键盘 bool OpenOSK() { HWND appWnd = ::FindWindow(L"OSKMainClass", NUL ...

  5. Android监控软键盘的开启/关闭状态

    原理:监控布局尺寸的变化,来判断软键盘是否为开启或者关闭状态. 注意事项: 1.不要将Activiy设置成FullScreen,貌似全屏不能adjustSize.. 2. AndroidManifes ...

  6. Android监听手机软键盘的弹起和关闭

    在很多App开发过程中需要在Activity中监听Android设备的软键盘弹起与关闭,但是Android似乎没有提供相关的的监听API给我们来调用,本文提供了一个可行的办法来监听软键盘的弹起与关闭. ...

  7. Android获取软键盘的高度、键盘的打开与关闭、监听键盘处于打开还是关闭状态

    最近在项目中,需要获取到软键盘的高度,再将底部的布局上移键盘的高度,话不多说,直接上代码: 获取软键盘高度 //一个静态变量存储高度public static int keyboardHeight = ...

  8. android点击软键盘外面的区域关闭软键盘解决办法

    很多时候在一个页面有多个输入框或者输入框加选择框的时候,我们需要根据用户的点击去关闭软键盘. 在Activity中加入以下代码即可 /**重写dispatchTouchEvent* 点击软键盘外面的区 ...

  9. Android AlertDialog 对话框开启和关闭输入法问题

    Android AlertDialog 对话框开启和关闭输入法问题 AlertDialog 对话框是android jar包自带的对话框,说实话 真的很丑,黑白相间,不是很推荐使用.大多时候 特别是项 ...

最新文章

  1. Science | 基于算法设计疫苗的人工蛋白
  2. html dom对象简写,js参考手册-html dom对象
  3. 最优化——线性规划总结1(线性规划标准型,规范型,顶点)
  4. 如何向github提交更新
  5. vue实现侧边折叠菜单栏手风琴效果
  6. codeforces 467A-C语言解题报告
  7. 分别用邻接矩阵和邻接表实现图的深度优先遍历和广度优先遍历_数据结构与算法学习笔记:图...
  8. 【100题】第三十二 数组、规划
  9. 文本词频统计是字典吗_TF-IDF词频逆文档频次算法
  10. maven jsp报错javax.servlet.http.HttpServlet“ was not found on the Java Build Path
  11. centos 安装tmux
  12. python语法学习第五天--函数(2)
  13. 2022款联想小新air15和联想小新pro14哪个好
  14. 通过封装接口实现淘宝商品详情数据上架京东店铺实现商品搬家上货操作实施代码展示
  15. 4、树莓派音频——jackd命令应用
  16. Build On实验学习心得
  17. 基于微信小程序的驾驶证模拟考试系统的设计与实现
  18. Symbian OS on E65应用开发手记(3)——SDK注册及14天学习总结
  19. Studio 3T 破解
  20. 郝斌数据结构全套教程高清在线观看和下载-学习数据结构必看

热门文章

  1. 关于C#我今天的六个小时
  2. 根据Email地址跳转到邮箱登录界面
  3. AGC001E BBQ Hard [dp]
  4. android 8.0 支付宝,新版支付宝钱包8.0发布(注意!有bug出没)
  5. Windows突然的软件更新
  6. 喜 欢 和 爱 的 区 别(转)
  7. 2015西交C语言在线作业,西交19秋《程序设计基础(高起专)》在线作业
  8. 使用 C 语言打开浏览器
  9. 移动银行的技术、业务和商业模式
  10. 2GB Turbo Memory(迅盘)开启Dashboard(自定义程序加速)的方法