【问题标题】:Android studio layout preview does not get my current themeAndroid Studio 布局预览没有得到我当前的主题
【发布时间】:2020-01-09 09:05:56
【问题描述】:

我有一个测试多模块项目,有些模块看不到我的应用程序主题。更详细地说,这些模块如下:app、common、home 和 details。

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

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

因此,当我转到 Activity 的布局编辑器并尝试从预览中更改主题时,我可以看到并选择我的主题。

但是我去 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。最后,除了app一个之外的所有模块都是库模块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>

【问题讨论】:

    标签: android android-studio android-theme


    【解决方案1】:

    您可以在AndroidManifest.xml 中分配一个默认主题,方法是将android:theme 添加到application 节点。这也适用于库模块,因为它们有一个空的 application 节点,可以在其中定义 XML 预览的默认主题。

    【讨论】:

    • 我尝试了“更多选项”,但没有运气。不过,您的其他建议效果很好,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多