В настоящее время я сталкиваюсь с проблемой реализации пользовательского регулятора яркости фокуса в ListRow в Android ТВ-приложении.
Ожидаемое поведение: каждый элемент в ListRow имеет прозрачное серое наложение. Это наложение невидимо, когда элемент имеет фокус, и видно, когда элемент не в фокусе. Теперь самое сложное: такое поведение ожидается только в том случае, если в фокусе находится сам ListRow. Это означает: всякий раз, когда я фокусирую другую ListRow, навигацию или любое другое представление, серые наложения всех элементов должны быть невидимыми (как если бы все элементы были в фокусе). логическое значение selectEffectEnabled, которое должно обеспечивать указанное поведение. Однако, когда я устанавливаю selectEffectEnabled = true, только ранее выбранные элементы затемняются, а не (как ожидалось) все не сфокусированные элементы.
То, что я сделал вместо этого: теперь у каждого представления элемента есть OnFocusChangeListener, подобный этому:
setOnFocusChangeListener { _, hasFocus ->
transparent_overlay.visibility = if (hasFocus) View.GONE else View.VISIBLE
}
Можно ли также проверить, имеет ли родительский вид представления элемента фокус, так, чтобы наложение также было ушел ли родитель потерял сосредоточенность? Если нет: есть ли другой способ реализовать описанное поведение?
Заранее спасибо!