У меня есть простой интерфейс в моем приложении - кнопка в верхней части экрана, EditText в центре экрана и еще две кнопки внизу. Теперь я хотел бы использовать dpad для навигации по элементам приложения, все работает отлично, кроме EditText, - в основном я могу просматривать элементы отлично, кнопки выделяются в фокусе, но не EditText - кажется, что он не отвечает, даже когда я нажимаю кнопку центральная кнопка dpad (поэтому клавиатура не отображается). Например, когда у меня есть самый верхний элемент, выделенный, и я нажимаю на dpad, верхняя кнопка теряет фокус, ни одна из двух кнопок внизу не получает фокус, так что похоже, что именно EditText получает фокус, но он не выделяет никоим образом, и не показывает клавиатуру. Когда я нажимаю на него с помощью курсора (или касаюсь устройства), все в порядке.Сделать FocusText с помощью dpad
Я попытался добавить OnKeyListener, чтобы проверить, но, кажется, не выпалить - вроде EditText не реально получить фокус и KeyEvent не открыли огонь по EditText:
editKanal.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN)
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER){
Toast.makeText(getApplicationContext(), "got the focus", Toast.LENGTH_LONG).show();
return true;
}
return false;
}
});
Может ли кто-нибудь сказать мне, что я делаю неправильно? Как сделать EditText показано нажатие клавиатуры на DPAD_CENTER?
Вы добавили следующий фокус вниз в макет? также все элементы внутри одного макета? –
Спасибо @ Hala.m - вы направили меня в правильном направлении! У меня был набор nextFocusDown, но элементы были в разных макетах - когда я избавился от многих макетов и поместил все в Relative, он внезапно начал работать отлично. – exx