LazyColumn 项目在彼此之上绘制

时间:2021-05-10 20:54:26

标签: android kotlin android-jetpack-compose

我使用 Jetpack Compose 版本 1.0.0-alpha01 和 LazyColumnFor 在列表中显示一些项目。更新到 1.0.0-beta06 后,我注意到 LazyColumnFor 已被弃用,取而代之的是 LazyColumn。然而,在迁移之后,列表中的项目会相互叠加,而不是垂直列出,中间有一些间距。

奇怪的是,预览会按预期呈现项目,而安装在设备上的应用却没有。

活动如下:

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            val textStyle = TextStyle(color = Color.White, fontSize = 16.sp)
            val boldStyle = textStyle.merge(TextStyle(fontWeight = FontWeight.Bold))
            ComposeListTestTheme {
                Surface(
                    modifier = Modifier.fillMaxSize(),
                    color = MaterialTheme.colors.background
                ) {
                    LazyColumn(modifier = Modifier.fillMaxHeight()) {
                        items(listOf("Row1", "Row2")) { day ->
                            Text(
                                text = day,
                                style = boldStyle,
                                modifier = Modifier.padding(top = 8.dp),
                                color = Color.Green
                            )
                        }
                    }
                }
            }
        }
    }
}

enter image description here

这是预览:

@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
    val textStyle = TextStyle(color = Color.White, fontSize = 16.sp)
    val boldStyle = textStyle.merge(TextStyle(fontWeight = FontWeight.Bold))
    ComposeListTestTheme {
        Surface(
            modifier = Modifier.fillMaxSize(),
            color = MaterialTheme.colors.background
        ) {
            LazyColumn(modifier = Modifier.fillMaxHeight()) {
                items(listOf("Row1", "Row2")) { day ->
                    Text(
                        text = day,
                        style = boldStyle,
                        modifier = Modifier.padding(top = 8.dp),
                        color = Color.Green
                    )
                }
            }
        }
    }
}

enter image description here

不幸的是,我无法让新的布局检查器在我的任何设备上工作,或者我怀疑我可以看到一些关于为什么会发生这种情况的线索。

ComposeListTestTheme:

@Composable
fun ComposeListTestTheme(
    darkTheme: Boolean = isSystemInDarkTheme(),
    content: @Composable() () -> Unit
) {
    val colors = if (darkTheme) {
        DarkColorPalette
    } else {
        LightColorPalette
    }

    MaterialTheme(
        colors = colors,
        typography = Typography,
        shapes = Shapes,
        content = content
    )
}

1 个答案:

答案 0 :(得分:0)

出现问题是因为该应用未经过硬件加速。此问题已在 https://issuetracker.google.com/issues/187853238 中修复。