Android中如何调出系统表情键盘并在EditText中展示表情?
实现EditText调用系统表情键盘并显示表情的解决方案
当前你设置的EditText属性如下:
android:inputType="textShortMessage|textAutoCorrect|textCapSentences|textMultiLine"
android:imeOptions="actionSend|flagNoEnterAction"
以下是实现调出系统表情键盘并正常显示表情的可行方案:
调整inputType属性
在现有inputType中补充表情相关标识,修改后的代码如下:android:inputType="textShortMessage|textAutoCorrect|textCapSentences|textMultiLine|textEmoji|textNoSuggestions"其中
textEmoji(API 30+支持)会明确引导输入法优先显示表情键盘,textNoSuggestions可避免自动联想功能干扰,提升表情键盘的唤起优先级。针对API 30以下的版本,仅保留textNoSuggestions配合原有属性即可。代码动态切换输入法类型
如果需要在运行时主动切换到表情键盘,可使用以下代码:
Java版本:editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE | InputType.TYPE_TEXT_FLAG_EMOJI); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);Kotlin版本:
editText.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE or InputType.TYPE_TEXT_FLAG_EMOJI val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT)检查输入法设置
部分第三方输入法需要手动开启表情入口或设置默认表情键盘,需确保用户使用的系统输入法支持表情输入功能,且已在输入法设置中开启相关选项。
注意:不要设置textPassword等会隐藏输入内容的inputType,这类属性会导致表情无法正常显示。
内容的提问来源于stack exchange,提问作者Kailash
相关产品推荐
相关产品推荐

