Android Studio с настройками AndroidX не работает Окно предварительного просмотра - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь использовать PreferencesFragmentCompat без какого-либо пользовательского стиля, но в окне предварительного просмотра IDE отображаются некоторые ошибки рендеринга и ошибки темы с базовой конфигурацией:

settings.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <PreferenceCategory app:title="Sensor settings">

        <EditTextPreference
            android:inputType="text"
            app:icon="@android:drawable/ic_menu_save"
            app:key="@string/key_setting_dname"
            app:summary=""
            app:title="Station Name" />

        <SwitchPreference
            app:defaultValue="false"
            app:key="@string/key_setting_enable_reboot"
            app:summary="@string/summary_reboot"
            app:title="Enable WiFi Connection" />

    </PreferenceCategory>


    <PreferenceCategory app:title="Dedicated WiFi Connection">

        <EditTextPreference
            android:inputType="text"
            app:icon="@android:drawable/ic_lock_lock"
            app:key="@string/key_setting_ssid"
            app:summary=""
            app:title="WiFi Name" />

        <EditTextPreference
            android:inputType="textWebPassword"
            android:password="true"
            app:key="@string/key_setting_pass"
            app:summary="WiFi password"
            app:title="Password" />

        <SwitchPreference
            app:defaultValue="false"
            app:key="@string/key_setting_enable_wifi"
            app:summary="@string/summary_wifi"
            app:title="Enable WiFi Connection" />

    </PreferenceCategory>

</PreferenceScreen>

styles.xml

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

</resources>

С его помощью я получаю следующие ошибки:

enter image description here

Я исправил эти проблемы, добавив некоторые расширения стилей

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="preferenceTheme">@style/PreferenceStyle</item>
    </style>

    <style name="PreferenceStyle" parent="@style/PreferenceThemeOverlay.v14.Material">
        <item name="preferenceCategoryStyle">@style/CustomPreferenceCategory</item>
    </style>

    <style name="CustomPreferenceCategory" parent="@style/Preference.Category">

    </style>

    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

</resources>

Но с этим я получаю старые настройки стиля заголовка

enter image description here

Моя цель - иметь последние стили без пользовательских стилей и без ошибок предварительного просмотра IDE, как это

enter image description here

1 Ответ

0 голосов
/ 04 июня 2019

Это проблема при рендеринге в Studio, см. https://issuetracker.google.com/issues/131618217 для получения дополнительной информации.Я думаю, вы могли бы просто изменить

<style name="CustomPreferenceCategory" parent="@style/Preference.Category">

на

<style name="CustomPreferenceCategory" parent="@style/Preference.Category.Material">

, чтобы использовать новейший макет и поддерживать работу рендеринга в студии.

...