Android 工作室布局预览没有得到我当前的主题
Android studio layout preview does not get my current theme
我有一个测试多模块项目,有些模块看不到我的应用程序主题。更详细地说,模块如下:app、common、home & details。
app 模块包含一个 activity 和导航,common 包含字符串和样式,home/detail 包含一个虚拟片段。所有片段都实现了包含我的风格的公共模块。
// Modules
implementation project(path: ':navigation')
implementation project(path: ':common')
因此,当我转到 activity 的布局编辑器并尝试从预览中更改主题时,我可以看到 select 我的主题。
但是我去HomeFragment的布局中没有这样的选项存在。
当然,当我 运行 应用程序时,样式按预期工作,唯一的问题是预览不起作用。这是公共模块上的主题:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.Leanback.Browse">
<!-- Theme.AppCompat compatibility: -->
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<!-- Theme.MaterialComponents compatibility: -->
<item name="colorPrimary">#171717</item>
<item name="colorPrimaryVariant">#212121</item>
<item name="colorAccent">#DD1C1A</item>
<item name="colorOnPrimary">#eeeeee</item>
<item name="colorSecondary">#FFEB3B</item>
<item name="colorSecondaryVariant">#FFC107</item>
<item name="colorOnSecondary">#eeeeee</item>
<item name="colorSurface">#2196F3</item>
<item name="colorOnSurface">#eeeeee</item>
</style>
</resources>
我在试错过程中观察到的一件事是,如果我将我的主题父项从 Leanback 更改为 Theme.AppCompat,预览会工作,但我不能这样做,因为我需要 Leanback。最后,除了应用程序之外的所有模块都是库模块apply plugin: 'com.android.library'
我的设置是 windows 10 PC,我使用的是 Android studio 4 canary 8。我也在 Android studio 4 canary 2 上测试过,结果相同。
编辑:解决方案 在模块清单上设置默认主题,感谢@Martin Zeitler
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.home">
<application android:theme="@style/AppTheme" />
</manifest>
您可以在 AndroidManifest.xml
中分配默认主题,方法是将 android:theme
添加到 application
节点。这也适用于库模块,因为它们有一个空的 application
节点,可以在其中定义 XML 预览的默认主题。
我有一个测试多模块项目,有些模块看不到我的应用程序主题。更详细地说,模块如下:app、common、home & details。
app 模块包含一个 activity 和导航,common 包含字符串和样式,home/detail 包含一个虚拟片段。所有片段都实现了包含我的风格的公共模块。
// Modules
implementation project(path: ':navigation')
implementation project(path: ':common')
因此,当我转到 activity 的布局编辑器并尝试从预览中更改主题时,我可以看到 select 我的主题。
但是我去HomeFragment的布局中没有这样的选项存在。
当然,当我 运行 应用程序时,样式按预期工作,唯一的问题是预览不起作用。这是公共模块上的主题:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.Leanback.Browse">
<!-- Theme.AppCompat compatibility: -->
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<!-- Theme.MaterialComponents compatibility: -->
<item name="colorPrimary">#171717</item>
<item name="colorPrimaryVariant">#212121</item>
<item name="colorAccent">#DD1C1A</item>
<item name="colorOnPrimary">#eeeeee</item>
<item name="colorSecondary">#FFEB3B</item>
<item name="colorSecondaryVariant">#FFC107</item>
<item name="colorOnSecondary">#eeeeee</item>
<item name="colorSurface">#2196F3</item>
<item name="colorOnSurface">#eeeeee</item>
</style>
</resources>
我在试错过程中观察到的一件事是,如果我将我的主题父项从 Leanback 更改为 Theme.AppCompat,预览会工作,但我不能这样做,因为我需要 Leanback。最后,除了应用程序之外的所有模块都是库模块apply plugin: 'com.android.library'
我的设置是 windows 10 PC,我使用的是 Android studio 4 canary 8。我也在 Android studio 4 canary 2 上测试过,结果相同。
编辑:解决方案 在模块清单上设置默认主题,感谢@Martin Zeitler
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.home">
<application android:theme="@style/AppTheme" />
</manifest>
您可以在 AndroidManifest.xml
中分配默认主题,方法是将 android:theme
添加到 application
节点。这也适用于库模块,因为它们有一个空的 application
节点,可以在其中定义 XML 预览的默认主题。