-
Notifications
You must be signed in to change notification settings - Fork 132
DateTimePicker 自定义
LOPER7 edited this page Jan 14, 2021
·
3 revisions
DateTimePicker 主要由至多6个 NumberPicker 组成,所以在自定义布局时,根据自己所需的样式摆放 NumberPicker 即可。以下为注意事项
-
DateTimePicker至多支持6个NumberPicker,你可以在xml中按需摆放1-6个NumberPicker - 为了让
DateTimePicker找到NumberPicker,需要在xml中为NumberPicker指定id或tag,规则如下
/**
* year:np_datetime_year
* month:np_datetime_month
* day:np_datetime_day
* hour:np_datetime_hour
* minute:np_datetime_minute
* second:np_datetime_second
*/
android:id="@+id/np_datetime_year" or android:tag="np_datetime_year"- 使用定制UI
在 CardDatePickerDialog 中使用
fun setPickerLayout(@NotNull layoutResId: Int)在 DateTimePicker 中使用
<com.loper7.date_time_picker.DateTimePicker
android:id="@+id/dateTimePicker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout="@layout/layout_date_picker_segmentation"
/>或者
dateTimePicker.setLayout(R.layout.layout_date_picker_segmentation)//自定义layout resId

如果以上自定义并不能满足你的需求,你还可以定制你自己的 DateTimePicker , 可参照 DateTimePicker.kt 定义你想要属性以及在代码内编写你的UI逻辑。选择器的各种逻辑约束抽离在 DateTimeController.kt ,你的 DateTimePicker 只需让 DateTimeController.kt 绑定 NumberPicker 即可。比如:
DateTimeController().bindPicker(YEAR, mYearSpinner)
.bindPicker(MONTH, mMonthSpinner)
.bindPicker(DAY, mDaySpinner).bindPicker(HOUR, mHourSpinner)
.bindPicker(MIN, mMinuteSpinner).bindPicker(SECOND, mSecondSpinner).build()快去定制你的 DateTimePicker 吧