软输入通过文本选择上的自定义键盘打开-如何防止

时间:2018-07-24 15:38:49

标签: android

许多问题涉及到在错误的时间抬起头的键盘服务,或者如何替换特定于视图的键盘。我这样做没有问题。 此问题有所不同,因为键盘服务会弹出自定义键盘的顶部,该键盘工作正常直到长按进行选择为止。 。此时,将显示默认键盘。我想停止这个。

为进一步说明 ,不是长按打开系统键盘。是进行选择的动作。例如:长按输入末尾不会选择任何内容,但是会弹出“剪切副本选择所有共享...”对话框。当您单击“全选”时,系统键盘将打开。

我认为应该删除指向该问题的解决方案链接的误导性建议。

我使用以下命令在EditText下安装特殊键盘:

        MA_expression.setOnClickListener { view ->
        mKeyboardView.visibility = View.VISIBLE
        mKeyboardView.isEnabled = true
        if (view != null) {
            val imm = getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
            imm.hideSoftInputFromWindow(view.windowToken, 0)
        }

    }

这按预期工作:

Use clicks in EditText

现在的目标是使用“ 45”作为函数的参数,因此选择了要成为参数的文本范围(此处简单,但也可以嵌入更复杂的表达式中) :

Text is selected by long press

现在问题很明显-标准键盘服务已弹出。可以使用完成按钮将其关闭,保留选择,保留我的键盘,选择FUNa键盘并选择要应用的功能。

System keyboard is displayed by the mechanism to create a selecdtion

enter image description here

结果是正确的,只是必须告诉中间系统键盘是不需要的。

如何完成?

1 个答案:

答案 0 :(得分:0)

关闭焦点侦听器上的android键盘 many1Satisfy

view.setOnFocusChangeListener