我的屏幕上有几个可聚焦的电视小部件。
我的代码:
@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))
}
}
Run Code Online (Sandbox Code Playgroud) android kotlin android-tv android-jetpack-compose android-jetpack-compose-tv
我有一个这样的页面:
当一个框被聚焦时,它将被缩放。我用来Modifier.graphicsLayer()缩放它。
但缩放后的盒子会被其他盒子覆盖(box01被box02、box04和box 05覆盖)
我真正需要的是:缩放后的盒子覆盖其他盒子,如下所示:
我的示例代码:
@Composable
fun FocusBox(
title:String,
requester: FocusRequester = FocusRequester(),
modifier: Modifier = Modifier
) {
var boxColor by remember { mutableStateOf(Color.White) }
var scale by remember { mutableStateOf(1f) }
Box(
Modifier
.focusRequester(requester)
.onFocusChanged {
boxColor = if (it.isFocused) Color.Green else Color.Gray
scale = if (it.isFocused) { 1.3f } else { 1f }
}
.focusable()
.graphicsLayer(
scaleX = scale,
scaleY = scale
).background(boxColor)
) {
Text(
text = title,
modifier = Modifier.padding(30.dp),
color = …Run Code Online (Sandbox Code Playgroud)