Подтвердить что ты не робот

Программно скрывать/отключать смайлики на мягкой клавиатуре Android

Можно ли скрыть конкретную кнопку клавиатуры? У меня есть EditText, и на некоторых устройствах у его клавиатуры есть смайлики, а на других устройствах это отсутствует. Я хочу скрыть его на всех устройствах.

Ниже приведен xml для моего EditText:

        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, и если это невозможно, я хотел бы знать, почему.

Благодарим вас за помощь.

4b9b3361

Ответ 1

Я действительно не понимаю, почему вопрос опущен. Это правильный вопрос.

Я нашел что-то здесь.

Вам нужно удалить параметр textLongMessage из inputType.

У вас по-прежнему будет кнопка ":-)" на большинстве клавиатур, но не emoji.

Ответ 2

(Для полноты)

Это решение предназначено для людей, которым требуется текстовое представление без смайлика на их мягкой клавиатуре. Решение @Adrian, чтобы использовать тип адреса электронной почты, работает, но оно будет показывать ненужные кнопки "@" и ".com" на вашей клавиатуре. Я попробовал несколько комбинаций InputType и лучшего решения IMHO:

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

Оригинальная клавиатура: введите описание изображения здесь

Результирующая клавиатура: введите описание изображения здесь

Ответ 3

Это работало для меня на Android 4.4.2

android:inputType="textEmailAddress|textMultiLine"

Ответ 4

От Петра Дании в аналогичном вопросе... Это позволяет автозаполнять и отключает все смайлики.

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});

Обратитесь к к полному сообщению ответа