首页 > 解决方案 > 带有 AndroidX 首选项的 Android Studio 无法预览窗口

问题描述

我尝试在没有任何自定义样式的情况下使用PreferencesFragmentCompat ,但 IDE 预览窗口显示一些渲染错误和主题错误,具有基本配置:

设置.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>

样式.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>

有了它,我得到了下一个错误:

在此处输入图像描述

我修复了这些问题,添加了一些样式扩展

<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>

但有了它,我得到了一个旧的标题风格偏好

在此处输入图像描述

我的目标是拥有没有自定义样式且没有 IDE 预览错误的最后样式,就像这样

在此处输入图像描述

标签: androidandroid-support-libraryandroid-preferencesandroidx

解决方案


这是 Studio 渲染中的一个问题,有关更多上下文,请参阅https://issuetracker.google.com/issues/131618217。我想你可以改变

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

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

使用最新的布局,并保持工作室渲染正常工作。


推荐阅读