如何在所有EditTexts中完全隐藏虚拟键盘?

时间:2019-07-07 05:41:38

标签: android

我正在开发一个android应用,其中大多数用户使用连接到android设备的硬件键盘来轻松输入字符。

即使存在硬件键盘,当用户单击EditText时,也会弹出虚拟键盘,这是不必要的。

我需要给用户一个设置以完全禁用虚拟键盘,以便他们可以单独使用硬件键盘。

This问题有几个关于如何为单个EditText禁用软键盘的答案,但是有条件地禁用单个EditText的软输入对我来说是相当困难的包含EditText的活动。

一种方法是安装Null Keyboard应用,并按照here的说明从android设置中将其选择为虚拟键盘,但我不希望我的应用的用户依赖第三方应用。

有没有一种方法可以全局禁用虚拟键盘,而不必为单个屏幕禁用虚拟键盘?

1 个答案:

答案 0 :(得分:0)

如果要为所有EditTexts禁用键盘,则可以创建自定义EditText并在其中禁用键盘功能。并且在您的项目中使用您自己的自定义NoKeyboardEditText而不是使用本机EditText。喜欢

public class NoKeyboardEditText extends EditText {


    public NoKeyboardEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }


    public void init() {
        setInputType(InputType.TYPE_NULL);
    }

}

现在,在XML中,您可以通过这种方式使用自定义NoKeyboardEditText

<com.your_package_name.NoKeyboardEditText
 ... // add all other attributes here
/>

我找到了另一种解决方案here,如果可以解决您的问题,请看一下。