有没有办法隐藏 Android 软键盘中的某些键?

Is there way to hide some keys in the Android Soft Keyboard?

我正试图摆脱创建自定义键盘的麻烦。我想知道是否有办法在默认 Android 软键盘中隐藏一个键。例如,我有一个需要无符号十进制数的 EditText 字段。但是每当键盘弹出时,“-”符号总是显示,显然,它被禁用了。我想去掉这个“-”号。

是的,你可以Create a Custom Keyboard on Android

将此键盘包含在您安装的应用程序中,并针对您正在使用的特定输入框触发键盘。

另请参阅:InputMethodService 用于绑定和使用输入机制的 API。

根据docs you can configure youe EditText with using InputType. Pay attention on TYPE_NUMBER_FLAG_SIGNED

Flag of TYPE_CLASS_NUMBER: the number is signed, allowing a positive or negative sign at the start.

我认为不创建自定义键盘是不可能的。默认键盘通常由设备制造商实现。这就是 xml 属性 android:inputType 在不同设备上具有不同效果的原因。

I was wondering if there was a way to hide a key in the default Android Soft Keyboard

没有

首先,没有单"default Android Soft Keyboard"。 Android 在超过 10 亿台设备上发货,涉及数千种型号,并安装了数十种 "default" 键盘。用户还可以将软键盘安装为第三方应用程序。

其次,你没有能力控制他们中的任何一个。充其量,您可以使用 android:inputType 之类的属性为您提供所需的建议。但是,这些是 请求 ,而不是 命令 ,输入法编辑器的作者不必尊重它们。此外,他们如何尊重他们取决于输入法编辑器的作者。

I am trying to get away from creating a custom keyboard.

那是没用的。您不能强迫用户使用您的键盘。您的键盘可能无法满足用户的其他要求。等等。

For example, I have an EditText field that requires unsigned decimal numbers. But whenever the keyboard pops up, the "-" sign always shows and obviously, it is disabled. I would like to get rid of this "-" sign.

这取决于输入法编辑器的实现者,而不是你。有些键盘可能会隐藏键。有些人可能会禁用密钥。有些人可能会完全忽略 signed/unsigned 请求,只显示标准数字键盘。有些人可能会完全忽略数字请求并显示他们的标准键盘,特别是如果他们真的没有 "keys".

的概念

作为更新,我承认只使用自定义键盘。由于我想要的键盘只是带小数点的数字键盘和删除、清除和回车等控制键,所以很容易制作。

我使用以下教程制作了键盘(没有十六进制和其他特殊键): http://www.fampennings.nl/maarten/android/09keyboard/index.htm

本教程存在一个缺陷,即布局不会针对键盘平移。因此,EditText 字段将隐藏在键盘下方。所以我将 CustomKeyboard class 更改为 InputMethodService。为此,我遵循了 tutorial

最后,每次我编辑 EditText 时,整个屏幕都会隐藏在横向模式下,因为我的应用程序只打算使用横向。所以这是不可接受的。我发现我必须从这个 answer

在我的 CustomKeyboard class 中添加这个方法(因为它是 InputMethodService 的派生物)

谢谢大家帮助我。我希望这对正在寻求做类似事情的人有所帮助。