带有AppCompat主题的日期选择器对话框

时间:2016-07-08 22:01:52

标签: android datepicker themes android-appcompat

在上图中(不用担心日历定位),除了所选日期的绿色外,整个日历是正确的主题颜色。我尝试过很多东西,但却无法改变主题的最后一部分!我使用Theme.AppCompat.Light.DarkActionBar并通过更改DatePickerDialogTheme的colorAccent来获得当前点。我也尝试过改变

  • dayOfWeekBackground
  • dayOfWeekTextAppearance
  • headerMonthTextAppearance
  • headerDayOfMonthTextAppearance
  • headerYearTextAppearance
  • headerSelectedTextColor
  • yearListItemTextAppearance
  • yearListSelectorColor
  • calendarTextColor
  • calendarSelectedTextColor

那些似乎没有做过。这是我的XML,提前谢谢你!

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorRed</item>
        <item name="colorPrimaryDark">@color/colorRed</item>
        <item name="colorAccent">@color/colorRed</item>
        <item name="android:datePickerDialogTheme">@style/MyDatePickerDialogTheme</item>
    </style>

    <style name="MyDatePickerDialogTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:colorAccent">@color/colorRed</item>
    </style>

3 个答案:

答案 0 :(得分:2)

要更改所选日期的圆圈颜色,请使用

    <item name="android:colorControlActivated">@color/your_colour</item>

答案 1 :(得分:0)

使用此主题

<style name="MyDatePickerDialogTheme" parent="Theme.AppCompat.Light.Dialog">
 <item name="android:colorAccent">@color/colorRed</item>
 <item name="android:datePickerStyle">@style/MyDatePickerStyle</item>
 <item name="android:colorAccent">@color/primaryDark</item>
</style>

<style name="MyDatePickerStyle" parent="@android:style/Widget.Material.Light.DatePicker">
 <item name="android:headerBackground">@color/primary</item>
 <item name="android:calendarTextColor">@color/primaryDark</item>
 <item name="android:dayOfWeekBackground">@color/primaryDark</item>
 <item name="android:yearListSelectorColor">@color/accent</item>
 <item name="android:datePickerMode">calendar</item>
</style>

答案 2 :(得分:0)

对于所选日期的颜色,您必须使用colorAccent,这是有用的:

<style name="PopupDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
    <!--selected day's color: define your own-->
    <item name="colorAccent">@color/yourColour</item>
</style>

并在您的类中实例化如下:

final AlertDialog.Builder datePickerBuilder = new AlertDialog.Builder(ProviderMainActivity.this, R.style.PopupDialogTheme);
// ... do something with your dialog, i.e. .show()

关于问题中提到的其他属性:查找their reference并找出他们采用的参数(在xml中)。 例如,要在标题中设置年/月/日的颜色,您必须定义文本外观(CodeFont),如下所示:

<DatePicker xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/dpPickDate"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_centerHorizontal="true"
    android:headerBackground="@drawable/calendar_header"
    android:headerYearTextAppearance="@style/YourCodeFont"
    android:headerMonthTextAppearance="@style/YourCodeFont"
    android:headerDayOfMonthTextAppearance="@style/YourCodeFont"/>

注意您需要在styles.xml中定义的YourCodeFont:

<style name="PopupCodeFont" parent="@android:style/TextAppearance.Medium">
    <item name="android:textColor">@color/black</item>
</style>

你不能,例如这样做:

android:headerYearTextAppearance="@color/black"

另请注意,其中一些属性(例如headerYearTextAppearance}需要API 21+,因此可以更好地处理和测试以前的版本。