-
Notifications
You must be signed in to change notification settings - Fork 3.4k
English Documentation
This is a library for android to pick date or options like IOS system WheelView widget. and support for the linkage, dialog . It's very easy to use , and you also can customize layout, which make it very customizable.
-
there are two options called OptionsPickerView and TimePickerView
-
OptionsPickerView supports three levels of linkage
-
TimePickerView support selection date range
-
support "year, month, day, hour, minute, second", "provincial, city, district" and other options of the unit (label) show or hide and customize label.
-
supports custom text, color, text size, etc.
-
If Item text length is too long, it will be adapted to the length of the Item to avoid the problem of incomplete display
compile 'com.contrarywind:Android-PickerView:4.1.9'
//TimePicker
pvTime = new TimePickerBuilder(this, new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date,View v) {//Callback
tvTime.setText(getTime(date));
}
})
.build();
pvTime.show();
//OptionsPicker
pvOptions = new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
@Override
public void onOptionsSelect(int options1, int option2, int options3 ,View v) {
////Callback
String tx = options1Items.get(options1).getPickerViewText()
+ options2Items.get(options1).get(option2)
+ options3Items.get(options1).get(option2).get(options3).getPickerViewText();
tvOptions.setText(tx);
}
}).build();
//pvOptions.setPicker(options1Items);
//pvOptions.setPicker(options1Items, options2Items);
pvOptions.setPicker(options1Items, options2Items, options3Items);
pvOptions.show();
If the default style does not meet your expectations, You can also customize attributes to apply
Calendar selectedDate = Calendar.getInstance();
Calendar startDate = Calendar.getInstance();
startDate.set(2013,1,1);
Calendar endDate = Calendar.getInstance();
endDate.set(2020,1,1);
pvTime = new TimePickerBuilder(this, new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date,View v) {//Callback
tvTime.setText(getTime(date));
}
})
.setType(new boolean[]{true, true, true, false, false, false})//Year, month, day, hour, minute, second.
.setCancelText("Cancel")
.setSubmitText("Sure")
.setContentSize(18)
.setTitleSize(20)
.setTitleText("Title")
.setOutSideCancelable(false)// default is true
.isCyclic(true)// default is false
.setTitleColor(Color.BLACK)
.setSubmitColor(Color.BLUE)
.setCancelColor(Color.BLUE)
.setTitleBgColor(0xFF666666)//Night mode
.setBgColor(0xFF333333)//Night mode
.setRange(calendar.get(Calendar.YEAR) - 20, calendar.get(Calendar.YEAR) + 20)//default 1900-2100 years
.setDate(selectedDate)// default is System time
.setRangDate(startDate,endDate)
.setLabel("year","month","day","hours","mins","seconds")
.build();
pvOptions = new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
@Override
public void onOptionsSelect(int options1, int option2, int options3 ,View v) {
////Callback
String tx = options1Items.get(options1).getPickerViewText()
+ options2Items.get(options1).get(option2)
+ options3Items.get(options1).get(option2).get(options3).getPickerViewText();
tvOptions.setText(tx);
}
})
.setSubmitText("sure")
.setCancelText("cancel")
.setTitleText("title")
.setSubCalSize(18)
.setTitleSize(20)
.setTitleColor(Color.BLACK)
.setSubmitColor(Color.BLUE)
.setCancelColor(Color.BLUE)
.setTitleBgColor(0xFF666666)//Night mode
.setBgColor(0xFF444444)//Night mode
.setContentTextSize(18)
.setLinkage(false)
.setLabels("province", "city", "district")
.setCyclic(false, false, false)
.setSelectOptions(0, 0, 0) //default options
.setOutSideCancelable(false)//dismiss, default is true
.build();
pvOptions.setPicker(options1Items, options2Items, options3Items);
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
// For more details, Please refer to the two custom layouts in demo
Calendar selectedDate = Calendar.getInstance();//System current time
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) {//call back
btn_CustomTime.setText(getTime(date));
}
}) .setType(TimePickerView.Type.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();
}
pvNoLinkOptions = new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
@Override
public void onOptionsSelect(int options1, int options2, int options3, View v) {
String str = "food:"+food.get(options1)
+"\nclothes:"+clothes.get(options2)
+"\ncomputer:"+computer.get(options3);
Toast.makeText(MainActivity.this,str,Toast.LENGTH_SHORT).show();
}
}).build();
pvNoLinkOptions.setNPicker(food,clothes,computer);
pvNoLinkOptions.show();