TextDecoration不适用于LazyColumn项目

时间:2020-10-09 11:22:52

标签: android android-jetpack-compose

我已经启动一个待办事项列表应用程序以进入jetpack compose。这是我到目前为止所得到的。

我有一个可写的待办事项:

@Composable
fun Todo(
    todo: TodoItem = TodoItem()
) {
    Row() {
        Checkbox

        Spacer

        if (todo.editing)
            EditTodo(todo, onEditingFinished = onEditingFinished)
        else
            TodoText(todo = todo)
    }
}

在这里我省略了样式位以突出显示实际组件

作为参考,这里是TodoItem

data class TodoItem(
    val id: String,
    val title: String,
    val done: Boolean,
    val editing: Boolean,
    val createdAt: Date,
)

我认为我的问题出在TodoText方法上:

@Composable
private fun TodoText(todo: TodoItem) {
    Text(
        text = todo.title,
        style = if (todo.done)
            TextStyle(
                textDecoration = TextDecoration.LineThrough,
                color = Color.LightGray,
                fontSize = 18.sp,
            )
        else
            TextStyle(
                textDecoration = TextDecoration.None,
                color = Color.Black,
                fontSize = 18.sp,
            )
    )
}

如果待办事项完成,我想相应地更改文本样式,正如您从以下gif所看到的,颜色正确更改,但装饰仍为LineThrough

Todo list checking item


也就是说,我不知道到底发生了什么。我确实将所有这些都放在LazyColumFor里面,我可能无法正确地回收视图,在这里还存在一个具有可变状态的viewmodel ...总之,这里可能还有更多的工作要做。我已将代码添加到github。如果要检查它,请使用此branch。我计划继续通过代码更改来更新master

1 个答案:

答案 0 :(得分:0)

显然,这与我使用的compose版本1.0.0-alpha04有关。

1.0.0-alpha06上,此问题不再发生。