Android предварительный просмотр макета студии не получает мою текущую тему - PullRequest
0 голосов
/ 09 января 2020

У меня есть тестовый многомодульный проект, и некоторые модули не видят тему моего приложения. Более подробно, это следующие модули: app, common, home & details.

Модуль app содержит действие и навигацию, common содержит строки и стиль, а home / detail содержит фиктивный фрагмент. Все фрагменты реализуют общий модуль, который содержит мой стиль.

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

Так что, когда я go в редакторе макета занятия и пытаюсь изменить тему из предварительного просмотра, я вижу и выбираю свою тему. activity_main.xml

Но я go для макета 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 P C, и я использую 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>

1 Ответ

2 голосов
/ 09 января 2020

Вы можете назначить тему по умолчанию в AndroidManifest.xml, добавив android:theme к узлу application. Это также должно работать для библиотечных модулей, поскольку у них есть пустой узел application, где можно определить тему по умолчанию для предварительного просмотра XML.

...