如何在TvLazyColumn中发现所选项目

问题描述 投票:0回答:1

我想根据 TVLazyColumn 中的行标题是否是焦点来对它进行动画处理。

我找不到如何获取列中的哪个项目具有焦点。

kotlin android-jetpack android-jetpack-compose-tv
1个回答
0
投票

您可以使用

onFocusChanged
修饰符来了解某个项目是否处于焦点状态。将修改器附加到所有行,您可以使用
it.hasFocus
检查焦点是否位于相应的惰性行内。

@Composable
fun App() {
    TvLazyColumn {
        item { AppRow() }
        item { AppRow() }
        item { AppRow() }
        // ...
    }
}

@Composable
fun AppRow() {
    var doesRowHaveFocus by remember { mutableStateOf(false) }

    TvLazyRow(
        modifier = Modifier
                .onFocusChange {
                    doesRowHaveFocus = it.hasFocus
                }
    ) {
        item { FocusableItem() }
        item { FocusableItem() }
        item { FocusableItem() }
        // ...
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.