Android Studio 隐藏和显示键盘

2020-08-07  本文已影响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选中内容,并弹出键盘进行编辑,点击确定或取消后隐藏键盘

        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、显示、隐藏软键盘(传入对应的环境或控件)

上一篇 下一篇

猜你喜欢

热点阅读