美文网首页
Android Studio 隐藏和显示键盘

Android Studio 隐藏和显示键盘

作者: 究极无敌棒棒糖 | 来源:发表于2020-08-07 09:04 被阅读0次

一、Activity和Fragment中显示和隐藏

  • 显示键盘
public static void showKeyBoard(EditText mEditText){
        InputMethodManager inputManager = (InputMethodManager) mEditText.getContext() .getSystemService(Context.INPUT_METHOD_SERVICE);
        inputManager.showSoftInput(mEditText, 0);
    }
  • 隐藏键盘(根据个人情况可以选择不要返回值)
  /**
     * 隐藏输入面板
     *
     * @param activity
     * @return true 成功隐藏面板,false 没有隐藏面板或者没有面板可以隐藏
     */
    public static boolean hideSoftInputFromWindow(Activity activity) {
        if (activity != null) {
            InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
            if (imm != null) {
                return imm.hideSoftInputFromWindow(activity.getWindow().getDecorView().getWindowToken(), 0);
            }
        }
        return false;
    }

二、部分Dialog中隐藏和显示

模拟电商APP购物车列表中点击TextView,弹出Dialog选中内容,并弹出键盘进行编辑,点击确定或取消后隐藏键盘

  • Dialog中添加一个EditText,获取焦点并选中Model传入文字
  • 延迟显示键盘:需要等dialog Show之后在进行弹出键盘,否则键盘不能正确显示。
  • 隐藏键盘:部分情况下通过获取activity隐藏键盘并不能成功。这里传入edit来隐藏键盘。
        val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
        //Dialog中添加一个EditText,获取焦点并选中Model传入文字
        val edit = EditText(context)
        edit.inputType = InputType.TYPE_CLASS_NUMBER
        edit.setText(model.quantity.toString())
        edit.setSelectAllOnFocus(true)
        AlertDialog.Builder(context)
                .setCancelable(true)
                .setTitle("请输入您的内容")
                .setView(edit)
                .setPositiveButton("确认") { dialog, which ->
                    if (edit.text.toString().isNotEmpty()) {
                        val count = edit.text.toString().toInt()
                        if (mode.stockQuantity < count)
                            ToastUtil.showMessage("库存不足")
                        else {
                            holder.etNumber.text = Editable.Factory.getInstance().newEditable(count.toString())
                            onItemClickListener.onNumberChangedUpdatePriceListener(position, count)
                        }
                        //隐藏键盘,这里传入edit隐藏键盘。
                        imm?.hideSoftInputFromWindow(edit.windowToken, 0)
                    }
                }
                .setNegativeButton("取消") { dialog, which ->
                    imm?.hideSoftInputFromWindow(edit.windowToken, 0)
                }
                .show()
        //延迟显示键盘:需要等dialog Show之后在进行弹出键盘,否则键盘不能正确显示。
        val timer = Timer()
        timer.schedule(object : TimerTask() {
            override fun run() {
                imm.showSoftInput(edit, 0)
            }
        }, 300)

写在最后:1、获取输入法管理器 2、显示、隐藏软键盘(传入对应的环境或控件)

相关文章

网友评论

      本文标题:Android Studio 隐藏和显示键盘

      本文链接:https://www.haomeiwen.com/subject/nggrrktx.html