Android AppCompat v7和日期选择器呈现问题

Android AppCompat v7和日期选择器呈现问题,android,android-studio,intellij-idea,datepicker,android-appcompat,Android,Android Studio,Intellij Idea,Datepicker,Android Appcompat,最近,我在《大书呆子牧场指南》(第二版)中读到了一章关于对话的内容,我按照这本书做了所有的事情。然而,有一些问题,这本书中没有提到。Intellij Idea的预览区域与AppCompat主题无法正常工作 这是我当前的主题: <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> </style>

最近,我在《大书呆子牧场指南》(第二版)中读到了一章关于对话的内容,我按照这本书做了所有的事情。然而,有一些问题,这本书中没有提到。Intellij Idea的预览区域与AppCompat主题无法正常工作

这是我当前的主题:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
     <!-- Customize your theme here. -->
</style>

这是我在预览区看到的:

在互联网上我读到使用Base.Theme.AppCompat.Light.darkaActionBar可能会有所帮助。它会删除消息,但ActionBar也会消失

哦,日期选择器不能同时使用和使用任何材质设计

这只是一个渲染问题,因为这两个主题在设备上都可以正常工作。有人可以尝试在IDEA和Android Studio中使用AppCompat主题预览DatePicker吗?也许这只是一个想法问题

p.S.dialog\u date.xml

<?xml version="1.0" encoding="utf-8"?>
<DatePicker xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/dialog_date_date_picker"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:calendarViewShown="false"
/>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.criminalintent" >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
                android:name=".CrimeListActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".CrimePagerActivity"
            android:label="@string/app_name" >
        </activity>
    </application>

</manifest>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<DatePicker xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/dialog_date_date_picker"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:calendarViewShown="false"
/>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.criminalintent" >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
                android:name=".CrimeListActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".CrimePagerActivity"
            android:label="@string/app_name" >
        </activity>
    </application>

</manifest>


使您的style.xml如下所示,工具栏将显示:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
     <!-- Customize your theme here. -->
</style>
<style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
</style>

假的
真的
您的日期选取者需要这样做:

<DatePicker
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:datePickerMode="spinner"
    android:id="@+id/datePicker" />

如果您需要在xml中使用日历视图,请添加此代替日期选择器

<CalendarView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/calendarView1" />

使您的style.xml如下所示,工具栏将显示:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
     <!-- Customize your theme here. -->
</style>
<style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
</style>

假的
真的
您的日期选取者需要这样做:

<DatePicker
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:datePickerMode="spinner"
    android:id="@+id/datePicker" />

如果您需要在xml中使用日历视图,请添加此代替日期选择器

<CalendarView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/calendarView1" />

切换主题 如果查看
Theme.AppCompat.Light.darkaActionBar
的声明,它将直接别名为AppCompat的values/themes.xml文件中的
Base.Theme.AppCompat.Light.darkaActionBar

<!-- Platform-independent theme providing an action bar in a dark-themed activity. -->
<style name="Theme.AppCompat.Light.DarkActionBar" parent="Base.Theme.AppCompat.Light.DarkActionBar" />

这在任何其他设备配置(例如values-v23/themes.xml、values-v18/themes.xml等)中都没有别名。请查看AppCompat的资源。这意味着对于每个设备,
Theme.AppCompat.Light.darkaActionBar
将始终且仅为
Base.Theme.AppCompat.Light.darkaActionBar
的别名

Base
主题的文档更清楚地说明了这一点:

“Base.Theme”系列中的主题根据当前的 平台版本为每个设备提供正确的基础。你 可能不想在你的应用程序中直接使用它们

“Theme.AppCompat”系列中的主题将被扩展或删除 应用程序直接使用

因此,从
Theme.AppCompat.Light.darkaActionBar
切换到
Base.Theme.Light.darkaActionBar
将永远不会影响实际设备上的显示方式,实际上也不是一个改变。Android Studio表现不同的事实是Android Studio的一个问题(我无法在AS 2.0 preview 9上使用您的代码重现)

Android Studio的问题 我要说的是,设计标签一直有点不稳定。情况正在好转,但并不总是很好,尤其是在支持库方面。仅仅为了让“设计”选项卡看起来漂亮而改变应用程序的主题(即使我上面说的不是真的)可能是个坏主意。想想你的用户。如果你真的想知道你的屏幕是什么样子的,那么把它部署到一个真正的设备或模拟器上

对话 我也无法在AS 1.4(稳定版)或AS 2.0预览版9(金丝雀、ATM)中重现您的对话问题。但是,由于您的整个布局文件是一个日期选择器,我认为您不会得到太多好处。当你认为你的代码>数据收件人< /代码>将显示在对话框中(设计标签无法模拟)时,这甚至更不好。我并不想说得太刺耳,但你可能需要咬紧牙关,使用模拟器或物理设备。

切换主题 如果查看
Theme.AppCompat.Light.darkaActionBar
的声明,它将直接别名为AppCompat的values/themes.xml文件中的
Base.Theme.AppCompat.Light.darkaActionBar

<!-- Platform-independent theme providing an action bar in a dark-themed activity. -->
<style name="Theme.AppCompat.Light.DarkActionBar" parent="Base.Theme.AppCompat.Light.DarkActionBar" />

这在任何其他设备配置(例如values-v23/themes.xml、values-v18/themes.xml等)中都没有别名。请查看AppCompat的资源。这意味着对于每个设备,
Theme.AppCompat.Light.darkaActionBar
将始终且仅为
Base.Theme.AppCompat.Light.darkaActionBar
的别名

Base
主题的文档更清楚地说明了这一点:

“Base.Theme”系列中的主题根据当前的 平台版本为每个设备提供正确的基础。你 可能不想在你的应用程序中直接使用它们

“Theme.AppCompat”系列中的主题将被扩展或删除 应用程序直接使用

因此,从
Theme.AppCompat.Light.darkaActionBar
切换到
Base.Theme.Light.darkaActionBar
将永远不会影响实际设备上的显示方式,实际上也不是一个改变。Android Studio表现不同的事实是Android Studio的一个问题(我无法在AS 2.0 preview 9上使用您的代码重现)

Android Studio的问题 我要说的是,设计标签一直有点不稳定。情况正在好转,但并不总是很好,尤其是在支持库方面。仅仅为了让“设计”选项卡看起来漂亮而改变应用程序的主题(即使我上面说的不是真的)可能是个坏主意。想想你的用户。如果你真的想知道你的屏幕是什么样子的,那么把它部署到一个真正的设备或模拟器上

对话 我也无法在AS 1.4(稳定版)或AS 2.0预览版9(金丝雀、ATM)中重现您的对话问题。但是,由于您的整个布局文件是一个日期选择器,我认为您不会得到太多好处。当你认为你的代码“D”时,这甚至不太有利。