当前位置: 首页 > 知识库问答 >
问题:

如何禁用默认键盘在Android oreo 8.0中出现和显示光标?

施锋
2023-03-14

我正在开发一个应用程序,我有显示自定义键盘,我需要禁用android默认键盘的显示,而且当我们点击编辑文本时,光标也应该显示出来。

我有以下链接(精选答案),但它们不适用于android 8.0

该代码用于隐藏键盘不出现,但没有显示光标。

Android编辑文本光标未出现

Android:在所有编辑文本中禁用软键盘

有谁知道答案吗。

共有1个答案

法兴德
2023-03-14

我得到了上述问题的答案。

我已经实现了自定义键盘(查看数字),只在EditText中输入数字。

我在屏幕上使用的每个编辑文本都使用了下面的函数集。

fun disableSoftInputFromAppearing(editText: CustomEditText) {

    if (Build.VERSION.SDK_INT >= 26) {

        editText.setRawInputType(InputType.TYPE_NULL)
        editText.inputType = InputType.TYPE_CLASS_NUMBER
        editText.showSoftInputOnFocus = false
        editText.setOnClickListener {
            hideKeyboard()
        }

        try {               
            val f = TextView::class.java.getDeclaredField("mCursorDrawableRes")
            f.isAccessible = true
            f.set(editText, R.drawable.cursor)
        } catch (ignored: Exception) {
        }

    } else if (Build.VERSION.SDK_INT >= 24) {
        editText.inputType = InputType.TYPE_CLASS_NUMBER
        editText.showSoftInputOnFocus = false
        editText.setOnClickListener {
            hideKeyboard()
        }
        editText.setRawInputType(InputType.TYPE_CLASS_NUMBER)
        editText.setTextIsSelectable(true)
    } else {
        if (Build.VERSION.SDK_INT >= 21 ) {
            editText.showSoftInputOnFocus = false
        } else if (Build.VERSION.SDK_INT >= 11) {
            editText.setRawInputType(InputType.TYPE_CLASS_TEXT)
            editText.isCursorVisible = true
            editText.setTextIsSelectable(true)
        } else {
            editText.setRawInputType(InputType.TYPE_NULL)
            editText.isFocusable = true
        }

        try {
            val f = TextView::class.java.getDeclaredField("mCursorDrawableRes")
            f.isAccessible = true
            f.set(editText, R.drawable.cursor)
        } catch (ignored: Exception) {
            ignored.printStackTrace()
        }
    }
}

布局文件中的EditText

<EditText
    android:layout_width="@dimen/_25sdp"
    android:layout_height="@dimen/_25sdp"
    android:cursorVisible="true"
    android:digits="0123456789"
    android:gravity="center"
    android:imeOptions="actionNext"
    android:longClickable="false"
    android:maxLength="1"
    android:singleLine="true"
    android:textColor="#000000"
    android:textSize="@dimen/_16sdp"
    tools:text="0" />
 类似资料:
  • > 我已经尝试了所有的文本区功能,比如type=“email”等等,我无法让它在所有Android版本上都工作。 我已经安装了cordova插件ionic键盘,它显示的键盘没有任何建议(图A)。但当我轻触ion文本区域时,本机键盘会显示出来(图B)。 我如何解决这个问题,或者禁用本机键盘上的建议,或者让Cordova插件替换我的ion textarea的本机键盘,或者其他什么?谢谢 图像A 图像B

  • 问题内容: 当用户在inputAccessoryView中点击“附加”按钮时,我想通过键盘创建一个简单的视图。像这样: 有简单的方法吗?或者我应该创建我的自定义键盘? 问题答案: 您可以将该新子视图添加到您的应用程序窗口。

  • 问题内容: 键盘出现时如何显示完整的列表?键盘隐藏了列表的下部。 我的列表行中有一个textField。当键盘出现时,无法向下滚动以查看完整列表。键盘在列表的前面,而不在列表的“下面”。这是我的编码: 有人可以帮我怎么做吗? 非常感谢你。 问题答案: 这里有一个处理键盘操作的,您可以订阅这样的键盘事件: 然后像这样使用它:

  • Illustrator 提供了许多快捷键来帮助您更快地完成工作。当您将鼠标光标悬停在命令菜单中的图标上方时,会显示许多键盘快捷键。 注意: 以下列表包含最有用的快捷键。您可以在菜单命令和工具提示中找到其他快捷键。 您可以在 Illustrator 中自定义键盘快捷键。请参阅自定义键盘快捷键。 键盘快捷键速查表 下载并打印 Illustrator 的一些有用键盘快捷键的一页速查表,以便于参考。  

  • 我想在Mac OS X 10.8 Mountain Lion中禁用键盘快捷键命令-W和命令-Q。 这是因为它们会干扰我从xQuartz运行的终端内部运行的emacs命令。如何禁用键盘快捷键?

  • 问题内容: 基本上就是这样,我还没有找到一种在我的应用程序中禁用第三方键盘的方法,尽管我知道这可能是因为,因为我已经在1Password等应用程序中看到了它。 有任何想法吗? 问题答案: 将此代码添加到您的 斯威夫特4: 苹果参考。