При открытии экрана фокус должен быть на первом просмотр на левой панели (левая панель: 0).
Пользователь может перемещаться (с помощью пульта дистанционного управления) по элементам левой панели вверх и вниз.
Если пользователь нажимает кнопку вправо, фокус перемещается на первое представление на правой панели (Правая панель: 0).
Пользователь может свободно перемещать фокус между элементами в правая панель.
Если пользователь находится на правой панели и нажимает кнопку «Влево», фокус должен вернуться к элементу на левой панели, из которого пользователь перешел на правую панель. То есть, если пользователь находился на третьем элементе левой панели и нажал вправо, то при возврате с правой панели на левую фокус должен вернуться к третьему элементу, где он был раньше.
Насколько я понимаю, необходимо запомнить индекс, из которого пользователь переместился на правую панель (скажем, кнопку 3) и отслеживает, когда пользователь нажимает влево. Когда пользователь нажимает влево, запрашивается фокус на сохраненном индексе (в нашем примере 3). Но у меня два вопроса:
Как отличить правый клик по элементам в правой панели (например, Правая панель 3 -> Правая панель 2 клик) от нужного клика (например, Правая панель: 6 -> Левая панель 3)?
Мне кажется, что такое решение выглядит слишком громоздко, и как-то это должно работать проще.
Есть такой экран (Android TV) [img]https://i.sstatic.net/YSIsfQx7.png[/img]
Мне нужно реализовать следующее: [list] [*]При открытии экрана фокус должен быть на первом просмотр на левой панели (левая панель: 0). [*]Пользователь может перемещаться (с помощью пульта дистанционного управления) по элементам левой панели вверх и вниз. [*]Если пользователь нажимает кнопку вправо, фокус перемещается на первое представление на правой панели (Правая панель: 0). [*]Пользователь может свободно перемещать фокус между элементами в правая панель. [*]Если пользователь находится на правой панели и нажимает кнопку «Влево», фокус должен вернуться к элементу на левой панели, из которого пользователь перешел на правую панель. То есть, если пользователь находился на третьем элементе левой панели и нажал вправо, то при возврате с правой панели на левую фокус должен вернуться к третьему элементу, где он был раньше.[/list] Все работает как надо кроме 5-го пункта. Вот код: [code]class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { Test_delete_itTheme { Surface( modifier = Modifier.fillMaxSize(), shape = RectangleShape ) { Greeting() } } } } }
@Composable fun Greeting() { val leftPanelFocusRequester: FocusRequester = remember { FocusRequester() } val rightPanelFocusRequester: FocusRequester = remember { FocusRequester() }
Насколько я понимаю, необходимо запомнить индекс, из которого пользователь переместился на правую панель (скажем, кнопку 3) и отслеживает, когда пользователь нажимает влево. Когда пользователь нажимает влево, запрашивается фокус на сохраненном индексе (в нашем примере 3). Но у меня два вопроса: [list] [*]Как отличить правый клик по элементам в правой панели (например, Правая панель 3 -> Правая панель 2 клик) от нужного клика (например, Правая панель: 6 -> Левая панель 3)? [*]Мне кажется, что такое решение выглядит слишком громоздко, и как-то это должно работать проще. [/list] Любые идеи приветствуются :)