Почему clearFocus () и setVisibility () не будут иметь никакого эффекта?

#android

#Android

Вопрос:

Я пытаюсь заставить вид EditText потерять фокус, отключить клавиатуру и стать невидимым. Отладка показывает, что код выполняется, а объекты search_view и view ссылаются на один и тот же объект. Однако ни один из вызываемых методов, похоже, не имеет эффекта.

 OnKeyListener enter_pressed = new OnKeyListener() {
    public boolean onKey(View view, int key_code, KeyEvent event)
    {
        switch ( key_code ) {
        case KeyEvent.KEYCODE_ENTER:
            view.clearFocus();
            getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
            view.setVisibility(0);
            return true;
        default:
            return false;
        }
    }
};
  

Также, как ни странно, код возвращается к регистру по умолчанию, даже после инструкции return . Добавление разрыва после возврата выдает предупреждение в Eclipse о недоступном коде, чего я и ожидал.

Ответ №1:

view.setVisibility (0) — это то же самое, что view.setVisibility (Просмотр.ВИЗУАЛИЗАЦИЯ) то, что вы хотите, это просмотр.НЕВИДИМЫЙ или видимый.ИСЧЕЗЛО (4 или 8 соответственно).

что касается сквозного прохождения, при отладке, каково значение key_code? возможно, это не KEYCODE_ENTER, который равен 66

для скрытия клавиатуры, которая мне нравится:

 InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
  

Комментарии:

1. Возможно, я ошибся, он больше не проходит. Вид. VISIBLE != ВИДИМЫЙ очень помогает.