Edittext переключиться на английский язык в приложении для Android

У меня есть макет в приложении для Android с кучей входов edittext.

Некоторые входы требуют, чтобы пользователь вводил данные на русском языке. последнее поле - это поле электронной почты. Электронная почта может быть на английском языке (99%), но также может содержать международные буквы. Так что будет очень удобно переключить клавиатуру на английский язык на этом поле ввода в фокусе (с возможностью переключения на другой язык).

Я попытался принудительно установить английский язык, а затем снять это ограничение с помощью .post:

emailEdit.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                emailEdit.setImeOptions(EditorInfo.IME_FLAG_FORCE_ASCII);
            }
            emailEdit.post(new Runnable() {
                @Override
                public void run() {
                    emailEdit.setImeOptions(EditorInfo.IME_ACTION_DONE);
                }
            });
        }
    }
});

Но этот код просто заставляет клавиатуру работать только на английском языке без возможности переключения на другой язык.

Есть ли способ переключить программную клавиатуру ввода текста на английский без ограничения «только на английском»?


person Alexandr Shutko    schedule 18.02.2016    source источник


Ответы (1)


Нет, особенно не во всех приложениях для клавиатуры. Большинство клавиатур поддерживают свой собственный язык ввода — это не концепция ОС Android. Так что это не может повлиять на это. И этот флаг может быть интерпретирован странным образом на другой клавиатуре. Большинство будет игнорировать это. Некоторые установят язык на английский. Другие будут выполнять странные переводы, такие как замена символов с акцентом на их основной символ. Приложения действительно имеют очень ограниченный контроль над клавиатурой на Android.

person Gabe Sechan    schedule 18.02.2016