多模块Jetpack Compose项目非App模块预览额外显示TopAppBar求助
解决多模块Jetpack Compose项目中非App模块预览出现额外TopAppBar的问题
这个问题源于非App模块的PreviewActivity默认使用了带ActionBar的主题,而App模块自身的主题配置会覆盖该默认行为,因此仅非App模块运行预览时会显示标题为androidx.compose.ui.tooling.PreviewActivity的TopAppBar。
以下是两种可行的解决方法:
方法一:为预览Composable包裹主题
在非App模块的预览Composable外层添加主题包裹(比如项目自定义主题或MaterialTheme),以此覆盖PreviewActivity的默认主题,消除额外的TopAppBar:
@Preview @Composable fun CorePreview() { MaterialTheme { Text("CorePreview!") } }
方法二:在模块清单中为PreviewActivity指定无ActionBar主题
在非App模块的AndroidManifest.xml中,为androidx.compose.ui.tooling.PreviewActivity配置无ActionBar的主题:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <application> <activity android:name="androidx.compose.ui.tooling.PreviewActivity" android:theme="@style/Theme.Material3.NoActionBar" /> </application> </manifest>
若项目使用Material2,可替换为@style/Theme.MaterialComponents.NoActionBar;使用AppCompat则用@style/Theme.AppCompat.NoActionBar。
两种方法均可解决静态预览正常但运行预览时出现额外TopAppBar的问题,可根据项目主题配置自行选择。
内容的提问来源于stack exchange,提问作者Blaupunkt
相关产品推荐
相关产品推荐

