Android Studio布局预览未获取我当前的主题

问题描述 投票:0回答:1

我有一个测试多模块项目,有些模块看不到我的应用程序主题。更详细地讲,这些模块如下:应用程序,通用,首页和详细信息。

应用程序模块包含一个活动和导航,公用包含字符串,样式和home / detail包含一个虚拟片段。所有片段都实现了包含我的样式的通用模块。

// Modules
implementation project(path: ':navigation')
implementation project(path: ':common')

因此,当我进入活动的布局编辑器并尝试从预览中更改主题时,可以看到并选择我的主题。activity_main.xml

但是我转到HomeFragment的布局,不存在这样的选项。fragment_home.xml

当然,当我运行应用程序时,样式可以按预期工作,唯一的问题是预览不起作用。这是通用模块上的主题:

<?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 Canary8。我也在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>
android android-studio android-theme
1个回答
1
投票

您可以通过在AndroidManifest.xml节点上添加android:themeapplication中分配默认主题。这对于库模块也应该有效,因为它们有一个空的application节点,可以在其中定义XML预览的默认主题。

© www.soinside.com 2019 - 2024. All rights reserved.