如何根据某个标志关注一行中的特定项目?

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

考虑以下代码:

val tvListState = rememberTvLazyListState()
val coScope = rememberCoroutineScope()
Column{
    TvLazyRow(
        horizontalArrangement = Arrangement.spacedBy(15.dp),
        state = tvListState,
        modifier = modifier
        .padding(end = 5.dp)
        , pivotOffsets = PivotOffsets(0f)) { *items* }
    TvLazyRow(
        horizontalArrangement = Arrangement.spacedBy(15.dp),
        state = tvListState,
        modifier = modifier
        .padding(end = 5.dp)
        , pivotOffsets = PivotOffsets(0f)) { *items* }
    TvLazyRow(
        horizontalArrangement = Arrangement.spacedBy(15.dp),
        state = tvListState,
        modifier = modifier
        .padding(end = 5.dp)
        , pivotOffsets = PivotOffsets(0f)) { *items* }
}

我想要做的是,当我们进入该行时,专注于其中一个惰性行中的特定项目,并将其绑定到一个标志,可能类似于

preFocusOnItem
。在我当前的实现中,我必须使用
itemsRequester[preFocusOnItem].requestfocus()
内的
LaunchedEffect
来调用此项目的焦点,其中数组用于为每个项目分配焦点请求者。这种方法的问题是焦点首先到达滚动自然会带来焦点的项目,然后在一瞬间焦点跳到我想要关注的项目。

如何在输入

preFocusOnItem
之一时直接调用焦点在
TvLazyRows
项上??

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

您可以使用默认的

LazyColumn
 将初始滚动位置设置为 LazyRow
rememberLazyListState
,如下所示:

// this will initialize scrolling position to the 5th item in the LazyList
val listState = rememberLazyListState(initialFirstVisibleItemIndex = 5)

LazyRow(
    state = listState
) {
    // ...
}
© www.soinside.com 2019 - 2024. All rights reserved.