【问题标题】:Android: How to change the selected date's color in a DatePicker element?Android:如何在 DatePicker 元素中更改所选日期的颜色?
【发布时间】:2023-03-19 00:32:01
【问题描述】:

我是 android 编程新手,我想在我的布局中使用 DatePicker 元素。我能够成功使用它,但我不知道如何更改其选定的日期颜色。我在这个网站上阅读了很多帖子,他们谈论在DatePickerDialog 中改变颜色。我尝试对DatePicker 元素采用类似的方法,但无法做到。我可以使用calendarTextColor 属性更改日期的textColor。我的布局文件代码如下:

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center">

            <DatePicker
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/datePicker"
                android:datePickerMode="calendar"
                android:spinnersShown="false"
                android:layout_gravity="center"

                android:layout_marginTop="-52dp"
                android:layout_marginBottom="-20dp"
                style="@style/MyDatePickerStyleTheme"
                />

</LinearLayout>

这里是对应的styles.xml代码:

<style name="MyDatePickerStyleTheme" parent="@android:style/Theme.Holo.Light.Dialog">
    <item name="colorAccent"> #00ff00 </item>

    <item name="android:datePickerStyle">@style/MyDatePickerStyle</item>
    <item name="android:colorPrimary"> #00ff00 </item>
    <item name="android:colorPrimaryDark"> #00ff00 </item>
    <item name="android:colorAccent"> #00ff00 </item>
    <item name="android:backgroundTint"> #00ff00 </item>
    <!-- <item name="android:calendarTextColor"> #00ff00 </item> -->


</style>

<style name="MyDatePickerStyle">
    <item name="android:calendarTextColor"> #00ff00 </item>
</style>

我想补充几点:

  1. 如果我将android:calendarTextColor 属性放在MyDatePickerStyleTheme 中,则该属性有效,但在放入MydatePickerStyle 时无效。
    换句话说,后面的主题样式没有任何效果。
  2. 在不同的 android 版本(Lollipop 和 Marshmallow)上,相同的代码给出了非常不同的布局。
  3. 我现在只想更改选定的日期颜色,但是如何更好地更改日期和其他样式之间的间距。

任何帮助将不胜感激。

【问题讨论】:

    标签: android android-layout datepicker


    【解决方案1】:

    添加到你的styles.xml

    <style name="MyDatePickerDialogTheme" parent="android:Theme.Material.Light.Dialog">
        <item name="android:datePickerStyle">@style/MyDatePickerStyle</item>
        <item name="android:colorAccent">@color/beautiful_color</item>
    </style>
    
    <style name="MyDatePickerStyle" parent="@android:style/Widget.Material.Light.DatePicker">
        <item name="android:headerBackground">@color/beautiful_color</item>
        <item name="android:datePickerMode">calendar</item>
    </style>
    

    然后在视图所在的布局中,添加 android:theme 属性,而不是 style

    <DatePicker
         android:theme="@style/MyDatePickerDialogTheme"
         android:id="@+id/datePicker"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" />
    

    【讨论】:

      【解决方案2】:
      <style name="MyDatePickerDialogTheme" parent="Theme.AppCompat.Light.Dialog">
      <!-- this is new -->
      <item name="colorAccent">@color/accent</item>
      
      <item name="android:datePickerStyle">@style/MyDatePickerStyle</item>
      <item name="android:colorAccent">@color/primDark</item>
      

      <style name="MyDatePickerStyle" parent="@android:style/Widget.Material.Light.DatePicker">
      <item name="android:headerBackground">@color/prim</item>
      <item name="android:calendarTextColor">@color/primDark</item>
      <item name="android:dayOfWeekBackground">@color/primDark</item>
      <item name="android:yearListSelectorColor">@color/accent</item>
      <item name="android:datePickerMode">calendar</item>
      <item name="android:minDate">01/01/2000</item>
      

      【讨论】:

      • 我尝试了您的建议,但没有奏效。而且我之前也有 colorAccent 属性。
      【解决方案3】:

      请通过下面的链接,它对我来说工作得很好...... [更改日期选择器主题颜色]

      https://github.com/wdullaer/MaterialDateTimePicker

      【讨论】:

      • 我不想使用 DatePickerDialog。对于 DatePicker,类似的样式不起作用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      • 1970-01-01
      • 1970-01-01
      • 2020-02-20
      • 1970-01-01
      • 2021-11-27
      • 2022-11-24
      相关资源
      最近更新 更多