问题
我已经为这个问题纠结了好几天了。
Android Studio的AVD似乎只为我的应用程序使用默认的Material3主题。我在不同的机器上使用相同的代码对这个特定的AVD配置没有问题,所以我只能假设这个问题与硬件有关,因为它在我的新硬件上不能正常工作。
失败解决方案
我测试了几种不同AVD的默认配置。Pixel 7 Pro、Pixel 6 Pro、Pixel 4和Nexus 6,均为API 33。我还手动编辑了与几个AVD相关的config.ini
文件,以使用主机图形,但无济于事。我甚至恢复到应用程序的master
分支上的旧代码,我可以肯定地确认在硬件更改之前它是工作的。
此外,我允许根据系统是处于亮模式还是暗模式来选择主题,这似乎也无所谓。
预览工作正常。
在Android Studio中或gradle构建过程中均不存在任何警告。
在Android Studio Giraffe 2022.3.1上
硬件
新硬件是Intel i7 3700k,RTX 4060 8GB GDDR6。我可以根据要求提供更详细的信息。
应用程序
我将在下面展示一些代码。请记住,这段代码被确认为具有在不同硬件上应用自定义主题的预期结果,因此我将省略许多细节。材料设计的较小版本不是已建立的依赖关系。
@Composable
fun App ( finish: () -> Unit ) {
val navController = rememberNavController()
AppTheme(
useDarkTheme = true
) {
AppFrame(
navController = navController
){
NavGraph(navController = navController)
}
}
}
主题
@Composable
fun AppTheme(
useDarkTheme: Boolean = isSystemInDarkTheme(),
content: @Composable () -> Unit
) {
val colors = if (!useDarkTheme) {
LightAltColors
} else {
DarkAltColors
}
MaterialTheme(
colorScheme = colors,
typography = AppTypography,
content = content
)
val systemUiController = rememberSystemUiController()
systemUiController.setSystemBarsColor(MaterialTheme.colorScheme.surface)
systemUiController.setNavigationBarColor(
MaterialTheme.colorScheme.surfaceColorAtElevation(NavigationBarDefaults.Elevation)
)
content()
}
1条答案
按热度按时间6qqygrtg1#
原来我错了。第二次调用
content
lambda参数在其上绘制内容,该内容使用默认的Material主题进行主题化。单位:
theme.kt