Я пытаюсь создать интерфейс для приложения запуска, которое можно просмотреть, используя только d-pad.Мой макет иерархический, каждый элемент верхнего уровня имеет список параметров.Чтобы перейти ко второму списку, пользователь сможет нажать элемент или нажать вправо.
Проблема в том, что из-за способа, которым Android определяет правильный вид для фокусировки в зависимости от местоположения, курсор переходит к неправильному элементу (который всегда находится непосредственно рядом с курсором).Обратитесь к рисунку 1 ниже;если бы пользователь нажал вправо, вместо демонстраций API были бы выделены инструменты Dev.
То же самое относится и к возврату влево.На рисунке 2, когда пользователь нажимает вправо, вместо Приложения будет выбрана Музыка.
![example of layout](https://i.stack.imgur.com/aPmqd.png)
До сих пор я пробовал следующее, чтобы вручную выбрать правильный вид:
appListView.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus) {
((ListView) v).getChildAt(0).requestFocus();
} else {
findViewById(R.id.apps_button).requestFocus();
}
}
});
Это терпит неудачу (я предполагаю), потому что действие dpad уже запустило requestFocus, и я убедился, что я получаю правильное дочернее представление, что дочернее представление фокусируемо, и что requestFocus ()возвращает false;
Что я могу сделать, чтобы сделать эту работу, как ожидалось?Заранее спасибо:)
РЕДАКТИРОВАТЬ 1:
Я также только что попытался установить кнопки приложения NextFocusRightId на первый элемент представления списка (который программно устанавливается адаптером списка @ position 0);ничего.
РЕДАКТИРОВАТЬ 2: NextFocus___Id также работает на этих кнопках, так как видео вверх фокусируется на Настройки, который работает нормально ...