gpt4 book ai didi

android - 如何在 Android jetpack Compose 中设置默认焦点项目

转载 作者:行者123 更新时间:2023-12-04 11:25:37 25 4
gpt4 key购买 nike

我有一个带有几个可聚焦电视小部件的屏幕。
enter image description here
每次我必须点击方向键然后Box01集中注意力。
有谁知道如何设置Box01默认集中?
enter image description here
我的代码:

@Composable
fun DefaultFocusSample(){
Row(Modifier.padding(100.dp)) {
FocusBox("Box01")
Spacer(modifier = Modifier.padding(10.dp))
FocusBox("Box02")
Spacer(modifier = Modifier.padding(10.dp))
FocusBox("Box03")
Spacer(modifier = Modifier.padding(10.dp))
FocusBox("Box04")
}

}
@Composable
fun FocusBox(text:String){
var color by remember { mutableStateOf(White) }
Box(
Modifier
.onFocusChanged {
color = if (it.isFocused) Green else White }
.focusable()
.border(2.dp,color)
){
Text(text = text,
modifier = Modifier.padding(10.dp))
}
}

最佳答案

要手动将焦点变为可聚焦,您可以使用 FocusRequester , 像这样:

@Composable
fun FocusBox(text:String, requester: FocusRequester = FocusRequester()){
var color by remember { mutableStateOf(Color.White) }
Box(
Modifier
.focusRequester(requester)
.onFocusChanged {
color = if (it.isFocused) Color.Green else Color.White
}
.focusable()
.border(2.dp, color)
) {
Text(text = text,
modifier = Modifier.padding(10.dp))
}
}

Row(
Modifier
.background(Color.Yellow)
.padding(10.dp)
) {
val requester = FocusRequester()
FocusBox("Box01", requester)
LaunchedEffect(Unit) {
requester.requestFocus()
}
Spacer(modifier = Modifier.padding(10.dp))
FocusBox("Box02")
Spacer(modifier = Modifier.padding(10.dp))
FocusBox("Box03")
Spacer(modifier = Modifier.padding(10.dp))
FocusBox("Box04")
}
LaunchedEffect是一个副作用,它只会在可组合出现时运行一​​次。在 the documentation 中查看更多信息

关于android - 如何在 Android jetpack Compose 中设置默认焦点项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68826625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com