【发布时间】:2017-05-15 09:46:15
【问题描述】:
我一直在尝试对 DatePicker 进行风格化——不 DatePickerDialog,如果这很重要的话——没有任何成功。
我面临的问题是:
如您所见,所选日期背景为黑色。我尝试应用以下样式:
<style name="DatePickerStyle" parent="Theme.AppCompat.Light.Dialog">
<item name="colorPrimary"> @color/Red </item>
<item name="colorPrimaryDark"> @color/Blue </item>
<item name="colorAccent"> @color/Green </item>
</style>
但我只会得到如下错误:
No resource found that matches the given name: attr 'colorPrimary'
和
Error retrieving parent for item:
No resource found that matches the given name 'Theme.AppCompat.Light.Dialog'.
我尝试通过代码来实现,但到目前为止,我唯一能做到的就是标题背景,通过这样做:
( ( datePicker.GetChildAt( 0 ) as LinearLayout ).GetChildAt( 0 ) as LinearLayout )
.SetBackgroundResource( Utils.AppColorResourceId );
或者,直接id
datePicker.FindViewById( 16909081 ).SetBackgroundResource( Utils.AppColorResourceId );
虽然我避免后者主要是因为我担心 id 会随着设备/操作系统版本而变化。
所以我的问题是:如何更改用于标记所选日期的颜色? 有没有办法通过代码做到这一点?如果是这样,怎么样?(由于用户可以执行一些操作来更改颜色,我想在运行时更改颜色)
编辑
样式.xml
...
<style name="MyDatePickerDialogTheme" parent="Theme.AppCompat.Light.Dialog">
<item name="colorAccent">@color/Blue</item>
<item name="android:datePickerStyle">@style/DatePickerStyle</item>
<item name="android:colorAccent">@color/Red</item>
</style>
<style name="DatePickerStyle" parent="@android:style/Widget.Material.Light.DatePicker">
<item name="android:headerBackground">@color/Red</item>
<item name="android:calendarTextColor">@color/Blue</item>
<item name="android:dayOfWeekBackground">@color/Green</item>
<item name="android:yearListSelectorColor">@color/Base</item>
</style>
...
【问题讨论】:
标签: android xamarin.android android-styles android-datepicker