有没有办法限制 Android 软键盘只允许表情符号字符?

Posted

技术标签:

【中文标题】有没有办法限制 Android 软键盘只允许表情符号字符?【英文标题】:Is there a way to restrict the Android soft keyboard to allow ONLY emoji characters? 【发布时间】:2020-10-30 15:19:33 【问题描述】:

我有一个只能是单个表情符号字符的 EditText。我添加了代码和过滤器来确保这一点,但我仍然有一个可用性问题,因为键盘以正常文本模式弹出。对用户来说,只允许使用 Emoji 字符并不明显。

  <EditText
    android:id="@+id/activity_emoji"
    style="@style/Material.Widget.EditText.Light"
    android:layout_
    android:layout_
    android:textColor="#FF000000"
    android:text="????"
    android:clickable="true"
    android:focusable="true"
    android:focusableInTouchMode="true" />

理想情况下,我可以禁用除表情符号之外的所有输入,但这似乎是不可能的。另一种选择是让键盘已经在表情符号页面上弹出,而不是在普通字母表上。是否有可能做到这一点,如果可以,怎么做?

在我看来,简单的解决方案将支持:

android:inputType="Emoji"

【问题讨论】:

【参考方案1】:

我添加了代码和过滤器来确保这一点

由于输入法编辑器不需要提供表情符号,所以你有一个小问题。

我仍然有一个可用性问题,因为键盘在正常文本模式下弹出

许多输入法编辑器只有有你认为的普通文本模式。

请理解,Android 设备型号超过 26,000 种。这些附带数十个(如果不是数百个)预装键盘。用户还可以从 Play 商店、F-Droid 和其他地方安装其他软件。没有人必须提供表情符号。我预计这样做的人相对较少,尽管这样做的那些(如 GBoard)将是最广泛使用的。

另外,请注意,并非所有 Android 设备都使用软键盘。有时,这是一个相当永久的状态(例如,Chromebook)。有时,它是一种临时状态(蓝牙键盘已启用、USB 键盘已插入、其他辅助设备已连接)。

有没有可能,如果可以,怎么做?

不,抱歉。

【讨论】:

似乎简单的解决方案是一个简单的添加:android:inputType="Emoji"。无论如何,如果我只能在该字段中允许表情符号字符,那么我如何测试我所使用的设备是否有表情符号?在这种情况下,我至少可以禁用该字段。 @Bungles:“似乎简单的解决方案是一个简单的添加:android:inputType="Emoji"。” ——改变世界上所有软键盘的实现似乎不符合“简单”的条件。 “我如何测试我使用的设备是否有表情符号?” ——询问用户。无法询问系统当前选择的输入法编辑器是否支持表情符号(或手势或 GIF 或几乎任何东西)。或者,build the emoji support into your app.

以上是关于有没有办法限制 Android 软键盘只允许表情符号字符?的主要内容,如果未能解决你的问题,请参考以下文章

EditView 输入限制(软键盘限制)

Android软键盘覆盖EditText字段

如何在键盘中指定允许的字符?

android软键盘挡住了下面的按钮,有啥办法解决么

java Android EditView输入限制(软键盘限制)

不希望软键盘在启动时自动显示-Android [重复]