软键盘管理

外包达人
• 阅读 1309

  安卓开发一般都需要进行软键盘管理,常用操作老司机已为你封装完毕,你可以用这份工具进行管理,具体可以查看源码,现在为你开车,Demo传送门

站点

软键盘管理 → AppKeyBoardMgr

openKeybord      : 打卡软键盘
closeKeybord     : 关闭软键盘
TimerHideKeyboard: 通过定时器强制隐藏虚拟键盘
isKeybord        : 输入法是否显示
hideInputMethod  : 隐藏输入法
showInputMethod  : 显示输入法

具体路线

public class AppKeyBoardMgr {

/**
 * 打开软键盘
 *
 * @param mEditText  输入框
 * @param mContext   上下文
 */
public static void openKeybord(EditText mEditText, Context mContext)
{
    InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(mEditText, InputMethodManager.RESULT_SHOWN);
    imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
}

/**
 * 关闭软键盘
 *
 * @param mEditText 输入框
 * @param mContext  上下文
 */
public static void closeKeybord(EditText mEditText, Context mContext)
{
    InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
}

/**
 * 通过定时器强制隐藏虚拟键盘
 */
public static void TimerHideKeyboard(final View v) {
    Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        @Override
        public void run() {
            InputMethodManager imm = (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
            if (imm.isActive()) {
                imm.hideSoftInputFromWindow(v.getApplicationWindowToken(),0);
            }
        }
    }, 10);
}

/**
 * 输入法是否显示
 */
public static boolean KeyBoard(EditText edittext) {
    boolean bool = false;
    InputMethodManager imm = (InputMethodManager) edittext.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
    if (imm.isActive()) {
        bool = true;
    }
    return bool;
}
/**
 * 切换软键盘的状态
 * 如当前为收起变为弹出,若当前为弹出变为收起
 */
public static void toggleKeybord(EditText edittext) {
    InputMethodManager inputMethodManager = (InputMethodManager)
        edittext.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
    inputMethodManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
}

/**
 * 强制隐藏输入法键盘
 */
public static void hideKeybord(EditText edittext) {
    InputMethodManager inputMethodManager = (InputMethodManager)
        edittext.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
    if (inputMethodManager.isActive()) {
        inputMethodManager.hideSoftInputFromWindow(edittext.getWindowToken(), 0);
    }
}

/**
 * 强制显示输入法键盘
 */
public static void showKeybord(EditText edittext) {
    InputMethodManager inputMethodManager = (InputMethodManager)
        edittext.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
    inputMethodManager.showSoftInput(edittext, InputMethodManager.SHOW_FORCED);
}

/**
 * 输入法是否显示
 */
public static boolean isKeybord(EditText edittext) {
    boolean bool = false;
    InputMethodManager inputMethodManager = (InputMethodManager)
        edittext.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
    if (inputMethodManager.isActive()) {
        bool = true;
    }
    return bool;
}

/**
 * 隐藏输入法
 *
 * @param mAct activity
 */
public static void hideInputMethod(Activity mAct) {
    try {// hide keybord anyway
        View v = mAct.getWindow().getCurrentFocus();
        if (v != null) {
            InputMethodManager imm = (InputMethodManager) mAct.getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
        }
    } catch (Exception e) {
    }
}

/**
 * 显示输入法
 *
 * @param mAct activity
 */
public static void showInputMethod(final Activity mAct) {
    View v = mAct.getCurrentFocus();
    if (null == v) {
        return;
    }
    ((InputMethodManager) mAct.getSystemService(Activity.INPUT_METHOD_SERVICE)).showSoftInput(v, 0);
}

}

终点站

  好了,终点站到了,如果对本次旅途满意的话,请给五星好评哦,没关注的小伙伴轻轻点个上方的关注,毕竟老司机牺牲了很多时间才换来这么一份工具类,如果该工具类依赖其他工具类,都可以在我的史上最全的常用开发工具类收集(持续更新中)中找到。

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Minikube之Win10单机部署
Kubernetes(k8s)是自动化容器操作的开源平台,基于这个平台,你可以进行容器部署,资源调度和集群扩容等操作。如果你曾经用过Docker部署容器,那么可以将Docker看成Kubernetes底层使用的组件,Kubernetes是Docker的上层封装,通过它可以很方便的进行Docker集群的管理。今天我们使用minikube在单机上进行Kubern
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Easter79 Easter79
3年前
SpringCloud微服务(03):Hystrix组件,实现服务熔断
\写在前面:阅读本文前,你可能需要熟悉一下内容。微服务组件:Eureka管理注册中心(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzU4Njg0MzYwNw%3D%3D%26mid%3D2247483697%26i
Wesley13 Wesley13
3年前
Ubuntu 命令技巧
前言下面的命令大都需要在控制台/终端/shell下输入。控制台,终端,和shell意味着同样一件事一个命令行界面,他可以用来控制系统。打开一个控制台:应用程序附件终端任何一个使用'sudo'作为前缀的命令都需要拥有管理员(或root)访问权限。所以你会被提示输入你自己的密码。安
Stella981 Stella981
3年前
DevOps世界中的软件开发
!(https://oscimg.oschina.net/oscnet/f40e68cbfe8148deb00f040b4e917a0a.jpg)在整个软件开发过程中,开发人员通常需要花费大量时间来修复错误和漏洞,以便一切按计划进行交付。但是,通过DevOps实践,可以更轻松地管理和保护这些问题。这是由于以下事实:使用DevOps实践的软
Wesley13 Wesley13
3年前
ISO27001信息安全管理体系
0x00前言初入甲方,刚开始接触的应该就是ISO27001信息安全管理体系,你拿到的应该就是一整套安全管理类的文档。在甲方,稍微有点规模的公司很注重制度和流程,岗位职责分工明细,那么这些安全管理制度,就是你所能掌控的游戏规则,几个人的信息安全部生存之道。0x01ISO27001简介ISO/IEC27001信息安全管理体系
凿壁偷光 凿壁偷光
2年前
TaskPaper for Mac(Mac任务管理工具)v3.9.1激活版
TaskPaperforMac是一款mac任务管理工具中,有着极其简单的应用操作界面,简单的操作为你带来最强大的任务管理工作!TaskPaperMac破解下载,是你在Mac平台中最好使用的GTD工具,让你的工作效率达到最高!
铁扇公主 铁扇公主
2年前
MacDroid for mac(安卓设备文件传输助手) v1.6.1中文
MacDroid一款Mac平台上的安卓传输助手,它可以帮助用户在Mac电脑和安卓设备之间传输文件和文件夹。MacDroid支持通过USB连接或局域网连接进行传输。MacDroid具有多种功能,包括文件和文件夹的双向传输、安卓设备的远程文件管理、安卓设备的存
美凌格栋栋酱 美凌格栋栋酱
5个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
阮小五 阮小五
2个月前
安卓手机+Mac无缝连接!MacDroid Pro 让你传文件像AirDrop一样简单
MacDroidPro是一款专为Mac用户设计的安卓设备管理工具,让Mac和安卓设备之间的文件传输、管理变得简单高效。✔无线/有线双模式连接支持USB连接或WiFi无线传输,灵活选择。兼容M1/M2Mac,速度更快更稳定。✔直观的文件管理直接访问安卓手机的
程序员一鸣 程序员一鸣
3天前
鸿蒙开发:一文了解软键盘相关
软键盘最主要的就是合理的进行避让,不能遮挡可输入组件,再有多个输入框的时候,需要动态的进行设置高度,这一点需要注意。