Вопрос

Я хотел, чтобы числовую клавиатуру имела кнопку, которая закрыла и выполнила класс расчета. Благодаря кончику от Commerware на то, куда начинать, я прекрасно работал на эмуляторе. Затем я пришел, чтобы загрузить его к своему HTC Hotire для тестирования, и это совсем не работает. Я уверен, что он должен быть из-за HTC Sense, имея свое собственное IME, но, безусловно, должен быть способ сделать эту работу над телефонами HTC? Кто-нибудь еще удалось обойти эту проблему?

Это было полезно?

Решение

Я могу реплицировать то, что я думаю, вы видите на HTC невероятно.

Не все программные клавиатуры будут поддерживать кнопку действий IME. Некоторые, такие как Graffiti Soft «клавиатура», может иметь никакие кнопки вообще, не говоря уже о кнопке действий IME. Даже Документ определения совместимости Ничего не говорит о необходимости такой кнопки действия для клавиатур, поставляемых с устройством.

Следовательно, вы не должны полагаться на кнопку IME Action. Если это там, пользователи могут использовать его. Тем не менее, всегда есть некоторые другие средства достижения любой цели.

Другие советы

Я обнаруживаю, была ли нажата кнопка «Готово / GO / REVER» с помощью ONEDITIONACTINGLISTENER, но проверка параметров IME и ключевых элементов для покрытия клавиатур HTC, а также любые клавиатуры, которые принимают параметры IME.

(Этот код работает для HTC невероятных клавиатур, а также любая клавиатура, которая имеет варианты IME)

EditText.setOnEditorActionListener(new TextView.OnEditorActionListener(){
    public boolean onEditorAction(TextView exampleView, int actionId, KeyEvent event){
        if(actionId == EditorInfo.IME_ACTION_DONE 
            || actionId == EditorInfo.IME_NULL
            || event.getKeyCode() == KeyEvent.KEYCODE_ENTER){

            //Do something in here
            return true;
        } else {
            return false;
        }
    }
});

Я использовал Edittext с Inputtype = «Номер» и решил проблему, изменяя решение ASCA:

private TextView.OnEditorActionListener numberEnterListener = new TextView.OnEditorActionListener(){
        public boolean onEditorAction(TextView tv, int actionId, KeyEvent event){
            if(actionId == EditorInfo.IME_ACTION_DONE 
                || actionId == EditorInfo.IME_NULL
                || event.getKeyCode() == KeyEvent.KEYCODE_ENTER){

                tv.clearFocus();

                //Stupid keyboard needs to be closed as well
                InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(tv.getWindowToken(), 0);

                return true;
            } else {
                return false;
            }
        }
    };

Фокус был удален для того, чтобы прекратить отображение номеров. ИММ требовался, потому что мягкая клавиатура все еще была присутствовать даже после очистки фокусировки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top