Android AppCompat v7和日期选择器呈现问题
最近,我在《大书呆子牧场指南》(第二版)中读到了一章关于对话的内容,我按照这本书做了所有的事情。然而,有一些问题,这本书中没有提到。Intellij Idea的预览区域与AppCompat主题无法正常工作 这是我当前的主题: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>
<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”时,这甚至不太有利。