Jetpack Compose中不使用Scaffold调用TopAppBar报错咨询
解决TopAppBar调用参数不匹配问题
1. 移除多余的空Lambda参数
你的代码末尾额外添加了一个空的{},这是在传递一个content参数,但如果你需要调用的TopAppBar重载并不包含该参数,就会触发参数不匹配错误。先删除这个多余的Lambda:
TopAppBar( title = { Text(text = "Notes") }, actions = { Icon( imageVector = Icons.Default.Notifications, contentDescription = "Notif" ) } )
2. 明确指定目标重载的包路径
Jetpack Compose的Material和Material3库中都有TopAppBar实现,不同库的重载参数差异会导致调用歧义。根据你需要的版本,显式导入对应的包:
- 若使用Material 2:
import androidx.compose.material.TopAppBar - 若使用Material 3:
import androidx.compose.material3.TopAppBar
3. 匹配参数作用域类型
部分TopAppBar重载的actions参数要求是RowScope.() -> Unit类型,若存在作用域不匹配的情况,可以显式指定作用域来对齐:
TopAppBar( title = { Text(text = "Notes") }, actions = RowScope { Icon( imageVector = Icons.Default.Notifications, contentDescription = "Notif" ) } )
4. 对照重载声明补全必填参数
查看两个TopAppBar的具体声明,确认目标重载的必填参数(比如部分Material3的重载要求colors或windowInsets参数),确保所有必填项都按要求传递。
内容的提问来源于stack exchange,提问作者sanjay_siddharth
相关产品推荐
相关产品推荐

