以编程方式隐藏/禁用Android软键盘上的表情符号

问题描述 投票:27回答:5

是否可以隐藏特定的键盘按钮?我有一个EditText,在某些设备上它的键盘有笑脸,而在其他设备上则缺少它。我想在所有设备上隐藏它。

下面是我的EditText的XML:

android:id="@+id/text_editor"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignWithParentIfMissing="true"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/send_side"
android:hint="Enter your text"
android:imeOptions="actionSend|flagNoEnterAction"
android:inputType="textLongMessage|textAutoCorrect|textCapSentences|textMultiLine"
android:maxLength="1000"
android:maxLines="3"
android:nextFocusRight="@+id/send_button"
android:padding="12dp"
android:textSize="13sp"

我不得不说我是Android新手,如果不可能,我想知道原因。

谢谢您的帮助。

android android-edittext android-softkeyboard
5个回答
13
投票

我真的不明白为什么这个问题被贬低了。这是一个有效的问题。

我找到了一些here

你需要从textLongMessage中删除inputType选项。

在大多数键盘上你仍会有“:-)”按钮,但不是表情符号。


6
投票

(为了完整起见)

此解决方案适用于需要在软键盘上没有笑脸的情况下进行textview的人。 @ Adrian的解决方案,使用电子邮件地址类型,但它会在键盘上显示不必要的“@”和“.com”按钮。我尝试了几种InputType组合和最佳解决方案恕我直言如下:

mTextView.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

原始键盘:enter image description here

结果键盘:enter image description here


0
投票

这在Android 4.4.2上适用于我

android:inputType="textEmailAddress|textMultiLine"

0
投票

来自PetrDaña的类似问题...这可以自动完成并禁用所有表情符号。

InputFilter filter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
    for (int i = start; i < end; i++) {
        int type = Character.getType(source.charAt(i));
        //System.out.println("Type : " + type);
        if (type == Character.SURROGATE || type == Character.OTHER_SYMBOL) {
            return "";
        }
    }
    return null;
    }
};

mMessageEditText.setFilters(new InputFilter[]{filter});

请参阅the complete answer post


0
投票

我尝试了@Adrian的解决方案,但它有“@”和“.com”键。我只需要一个可以取用户名字的字段。我通过组合textVisiblePassword和textNoSuggestions. android:inputType="textVisiblePassword|textNoSuggestions得到了我的解决方案

© www.soinside.com 2019 - 2024. All rights reserved.