Android 简单使用输入法

场景一、自动获取焦点并弹出输入法

当页面显示就需要弹出输入法时,便可以通过setSoftInputMode方法调整输入法模式。

//模式切换为显示
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE)
//获取焦点
mEditText.requestFocus()

该方法参数:

参数介绍
SOFT_INPUT_STATE_UNSPECIFIED软键盘没有指定状态,由系统决定
SOFT_INPUT_STATE_UNCHANGED软键盘保持上次状态
SOFT_INPUT_STATE_HIDDEN软键盘被隐藏
SOFT_INPUT_STATE_ALWAYS_HIDDEN软键盘总是被隐藏
SOFT_INPUT_STATE_VISIBLE软键盘显示
SOFT_INPUT_STATE_ALWAYS_VISIBLE软键盘总是显示
SOFT_INPUT_ADJUST_UNSPECIFIED由系统自行决定是隐藏还是显示
SOFT_INPUT_ADJUST_RESIZE调整屏幕的大小以便留出软键盘的空间
SOFT_INPUT_ADJUST_PAN自动移动以便当前焦点不被键盘覆盖
SOFT_INPUT_ADJUST_NOTHING窗口将不会调整大小,也不会被平移以使其焦点可见

场景二、获取焦点但不弹出输入法

即使EditText获取焦点,也不允许输入法弹出。
这时候就可以设置setShowSoftInputOnFocus为false;

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
    val cls = EditText::class.java
    val method: Method
    try {
        method =
            cls.getMethod("setShowSoftInputOnFocus", Boolean::class.javaPrimitiveType)
        method.isAccessible = true
        method.invoke(mEditText, false)
    } catch (e: Exception) {
    }
} else {
    mEditText.showSoftInputOnFocus = false
}

场景三、不允许弹出编辑菜单

可以通过重写两个回调,来解决。

mEditText.customInsertionActionModeCallback = object : ActionMode.Callback {
    override fun onActionItemClicked(mode: ActionMode?, item: MenuItem?): Boolean {
        return false
    }

    override fun onCreateActionMode(mode: ActionMode?, menu: Menu?): Boolean {
        return false
    }

    override fun onPrepareActionMode(mode: ActionMode?, menu: Menu?): Boolean {
        return false
    }

    override fun onDestroyActionMode(mode: ActionMode?) {}
}
mEditText.customSelectionActionModeCallback = object : ActionMode.Callback {
    override fun onActionItemClicked(mode: ActionMode?, item: MenuItem?): Boolean {
        return false
    }

    override fun onCreateActionMode(mode: ActionMode?, menu: Menu?): Boolean {
        return false
    }

    override fun onPrepareActionMode(mode: ActionMode?, menu: Menu?): Boolean {
        return false
    }

    override fun onDestroyActionMode(mode: ActionMode?) {}

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值