默认样式
<DatePicker
android:id="@+id/date_picker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:datePickerMode="calendar"
/>
修改后
<DatePicker
android:id="@+id/date_picker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:datePickerMode="calendar"
android:layout_gravity="center"
android:layout_marginTop="30dp"
android:background="#fff"
style="@style/CustomDatePickerTheme"
android:theme="@style/picker" />
themes.xml文件
<style name="CustomDatePickerTheme" parent="@android:style/Widget.Material.Light.DatePicker">
<!-- 控制头部背景色 -->
<item name="android:headerBackground">#0080ff</item>
</style>
<style name="picker" parent="android:Theme.Material">
<!-- 控制头部年份 -->
<item name="android:textColorSecondaryInverse">#f0f</item>
<!-- 控制头部的月、日、星期,以及选中的日期的颜色 -->
<item name="android:textColorPrimaryInverse">#ff0</item>
<!-- 控制年月日的颜色,日期优先使用 textColorPrimaryActivated -->
<item name="android:textColorPrimary">#00f</item>
<!-- 控制日期的颜色 -->
<!-- <item name="android:textColorPrimaryActivated">#f00</item>-->
<!-- 控制星期的颜色 -->
<item name="android:textColorSecondary">#0f0</item>
<!-- 左右切换年份按钮的背景色 -->
<item name="android:selectableItemBackgroundBorderless">@drawable/rect_round_white</item>
<!-- 选中的日期的背景色,以及今天的日期的文字颜色 -->
<item name="android:colorAccent">#cc9</item>
</style>
如果想隐藏头部(蓝色背景区域),可以这样做
if (pickerView.childCount == 1) {
(pickerView.getChildAt(0) as? LinearLayout)?.let { container ->
if (container.childCount == 2) {
(container.getChildAt(0) as? LinearLayout)?.let { pickerHeaderView ->
pickerHeaderView.visibility = View.GONE
}
}
}
}