android - Material Theme Colors 导致空白 Jetpack Compose 按钮
问题描述
使用默认材质主题颜色(下面的代码)的简单组合会生成以下预览图像(在 IDE 和设备上)
@Preview
@Composable
fun PreviewCalendar() {
MaterialTheme {
Column{
Row{Text("Hello World")}
Row{Button(onClick = {}){Text("Hello World Button")} }
}
}
}
当提供我自己的颜色时,按钮变为空白(下面的代码和屏幕截图)。阅读源代码,Button
我希望按钮具有primary
背景颜色。我是否错误地实现了我的颜色?我找不到类似行为的错误报告
val lightTheme =
Colors(
primary = Color(0x0d47a1),
primaryVariant = Color(0x5472d3),
secondary = Color(0x212121),
secondaryVariant = Color(0x484848),
background = Color(0xffffff),
surface = Color(0xffffff),
error = Color(0xB00020),
onPrimary = Color(0xffffff),
onSecondary = Color(0xffffff),
onBackground = Color(0x000000),
onSurface = Color(0x000000),
onError = Color(0xffffff),
isLight = true
)
@Preview
@Composable
fun PreviewCalendar() {
MaterialTheme(colors = lightTheme) {
Column{
Row{Text("Hello World")}
Row{Button(onClick = {}){Text("Hello World Button")} }
}
}
}
解决方案
我使用 google 的材质主题工具生成了这些颜色,但没有注意到 Compose 正在寻找 ARGB 颜色空间。我指定的所有颜色的 alpha 值为 0,因此是透明的。正确的颜色是:
val lightTheme =
Colors(
primary = Color(0xFF0d47a1),
primaryVariant = Color(0xFF5472d3),
secondary = Color(0xFF212121),
secondaryVariant = Color(0xFF484848),
background = Color(0xFFffffff),
surface = Color(0xFFffffff),
error = Color(0xFFB00020),
onPrimary = Color(0xFFffffff),
onSecondary = Color(0xFFffffff),
onBackground = Color(0xFF000000),
onSurface = Color(0xFF000000),
onError = Color(0xFFffffff),
isLight = true
)
推荐阅读
- c++ - 如何将 FileListAbsolute.txt 重定向到另一个文件夹
- javascript - 如何使用 JavaScript 编辑 CSS 主题标签
- javascript - PropType 可选以反应组件
- google-slides-api - 基于在演示文稿中创建新幻灯片的 Google 幻灯片中的不可编辑时间戳
- javascript - 如何使用节点 js 中谷歌驱动器中的谷歌 API 克隆文件夹结构并上传到谷歌存储桶?
- kubernetes - 如何恢复意外删除主标签的 k8s/Openshift 集群
- javascript - 自定义 javascript 视频播放器在 11 秒后停止
- html - 不占用空间的粘性元素(如相对/绝对元素) - CSS
- javascript - 在 TinyMCE 5 中为自定义菜单项添加样式
- macos - 为什么 x86 中的这个与链表相关的程序会出现段错误?