Customize Picker Layout
masterYou can provide a custom XML layout for the picker using .setLayoutRes(int layoutRes, CustomListener listener).
CRITICAL: When using a custom layout, you must NOT modify the IDs of the child widgets (e.g., for OptionsPicker or TimePicker). Doing so will cause a NullPointerException.
In the customLayout callback, you can manually handle clicks for the submit and cancel buttons using pv.returnData(view) and pv.dismiss() respectively.
private void initCustomTimePicker() {
// be careful: In the custom layout, the layout of the ID for optionspicker
// or TimePicker and its child widget must not be modified,
// otherwise will be reported NullPointerException
Calendar selectedDate = Calendar.getInstance();
Calendar startDate = Calendar.getInstance();
startDate.set(2013,1,23);
Calendar endDate = Calendar.getInstance();
endDate.set(2019,2,28);
pvCustomTime = new TimePickerBuilder(this, new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
btn_CustomTime.setText(getTime(date));
}
}) .setType(new boolean[]{true, true, true, false, false, false})// year - month - day
.setDate(selectedDate)
.setRangDate(startDate,endDate)
.setLayoutRes(R.layout.pickerview_custom_time, new CustomListener() {
@Override
public void customLayout(View v) {
final TextView tvSubmit = (TextView) v.findViewById(R.id.tv_finish);
ImageView ivCancel = (ImageView) v.findViewById(R.id.iv_cancel);
tvSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pvCustomTime.returnData(tvSubmit);
}
});
ivCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pvCustomTime.dismiss();
}
});
}
})
.setDividerColor(Color.BLACK)
.build();
}