Android Studio中Compose的Divider()函数被划掉的解决办法咨询
解决Material3 Divider显示删除线(废弃标记)的问题
核心原因
你调用的无参Divider()函数在当前使用的Material3版本中已被标记为废弃,同时代码中还存在其他语法/逻辑问题导致运行异常。
解决步骤
1. 更新Material3依赖版本
打开模块级build.gradle文件,确保Material3依赖使用最新稳定版,示例:
implementation "androidx.compose.material3:material3:1.2.1"
同步项目后重新编译。
2. 使用非废弃的Divider重载函数
替换无参Divider()为带参数的版本,既规避废弃标记,还能自定义样式,示例:
Divider( modifier = Modifier.padding(vertical = 12.dp, horizontal = 12.dp), color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.12f) )
3. 修复代码中的其他问题
你的代码存在语法错误、状态管理错误和逻辑错误,以下是修复后的完整App函数:
@Composable fun App(){ var item by remember{ mutableStateOf("something") } // 使用mutableStateListOf才能触发重组更新UI val items = remember { mutableStateListOf<String>() } FirstAprilTemplateTheme { Surface( modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background ) { // 所有Composable需包裹在同一个布局容器内 Column(modifier = Modifier.padding(12.dp)) { Text( text = "To Do list!", fontSize = 32.sp, fontWeight = FontWeight.Bold, modifier = Modifier.padding(bottom = 12.dp) ) OutlinedTextField( value = item, onValueChange = { item = it }, label = { Text(text = "New Item") }, modifier = Modifier.fillMaxWidth().padding(bottom = 8.dp) ) Row(modifier = Modifier.fillMaxWidth()) { OutlinedTextField( value = item, onValueChange = { item = it }, label = { Text(text = "New Item") }, modifier = Modifier.weight(1f).padding(end = 8.dp) ) Button(onClick = { // 修正逻辑:非空内容才添加 if (item.isNotEmpty()) { items.add(item) item = "" } }) { Text(text = "Save") } } // 使用非废弃的Divider Divider( modifier = Modifier.padding(vertical = 12.dp), color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.12f) ) Column(){ for (todoItem in items){ ToDoListItem(name = todoItem) } } } } } }
内容的提问来源于stack exchange,提问作者user29877730
相关产品推荐
相关产品推荐

