效果图
1、添加Gradle依赖:
implementation 'com.contrarywind:Android-PickerView:3.2.6'
2、初始化数据
//系统当前时间
selectedDate = Calendar.getInstance();
startDate = Calendar.getInstance();
startDate.set(1965, 4, 24);//第一个选择
endDate = Calendar.getInstance();
endDate.set(2069, 7, 28);//最后一个选择
tv_date = findViewById(R.id.tv_date);
rl_date.setOnClickListener(this);//监听控件
3、方法实现:
private void showDate() {
TimePickerView pvTime = new TimePickerView.Builder(this, new TimePickerView.OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
String time = getTime(date);
tv_date.setText("日期:" + time);
}
})
.setType(new boolean[]{true, true, true, true, true, false})// 默认全部显示
.setCancelText("取消")//取消按钮文字
.setSubmitText("确定")//确认按钮文字
// .setContentSize(18)//滚轮文字大小
// .setTitleSize(20)//标题文字大小
// .setTitleText("Title")//标题文字
// .setOutSideCancelable(true)//点击屏幕,点在控件外部范围时,是否取消显示
.isCyclic(true)//是否循环滚动
// .setTitleColor(Color.BLACK)//标题文字颜色
// .setSubmitColor(Color.BLUE)//确定按钮文字颜色
// .setCancelColor(Color.BLUE)//取消按钮文字颜色
// .setTitleBgColor(0xFF666666)//标题背景颜色 Night mode
// .setBgColor(0xFF333333)//滚轮背景颜色 Night mode
.setDate(selectedDate)// 如果不设置的话,默认是系统时间*/
.setRangDate(startDate, endDate)//起始终止年月日设定
// .setLabel("年","月","日","时","分","秒")//默认设置为年月日时分秒
.isCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。
// .isDialog(true)//是否显示为对话框样式
.build();
pvTime.show();
}
4、根据需求选择显示数据:
private String getTime(Date date) {
//根据需要自行截取数据显示
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:MM");
return format.format(date);
}
5、调用:
@Override
public void onClick(View view) {
showDate();
}
全部代码
java:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Calendar selectedDate;
private Calendar startDate;
private Calendar endDate;
private TextView tv_date;
private RelativeLayout rl_date;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//系统当前时间
selectedDate = Calendar.getInstance();
startDate = Calendar.getInstance();
startDate.set(2014, 1, 23);
endDate = Calendar.getInstance();
endDate.set(2069, 2, 28);
tv_date = findViewById(R.id.tv_date);
rl_date.setOnClickListener(this);
}
@Override
public void onClick(View view) {
showDate();
}
private void showDate() {
TimePickerView pvTime = new TimePickerView.Builder(this, new TimePickerView.OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
String time = getTime(date);
tv_date.setText("日期:" + time);
}
})
.setType(new boolean[]{true, true, true, false, false, false})// 默认全部显示
.setCancelText("取消")//取消按钮文字
.setSubmitText("确定")//确认按钮文字
// .setContentSize(18)//滚轮文字大小
// .setTitleSize(20)//标题文字大小
// .setTitleText("Title")//标题文字
// .setOutSideCancelable(true)//点击屏幕,点在控件外部范围时,是否取消显示
.isCyclic(true)//是否循环滚动
// .setTitleColor(Color.BLACK)//标题文字颜色
// .setSubmitColor(Color.BLUE)//确定按钮文字颜色
// .setCancelColor(Color.BLUE)//取消按钮文字颜色
// .setTitleBgColor(0xFF666666)//标题背景颜色 Night mode
// .setBgColor(0xFF333333)//滚轮背景颜色 Night mode
.setDate(selectedDate)// 如果不设置的话,默认是系统时间*/
.setRangDate(startDate, endDate)//起始终止年月日设定
// .setLabel("年","月","日","时","分","秒")//默认设置为年月日时分秒
.isCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。
// .isDialog(true)//是否显示为对话框样式
.build();
pvTime.show();
}
private String getTime(Date date) {
//根据需要自行截取数据显示
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
return format.format(date);
}
}
layout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/all_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/line_and_outline_grey" />
<RelativeLayout
android:id="@+id/rl_date"
style="@style/item_style"
android:paddingLeft="10dp">
<TextView
android:id="@+id/tv_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginLeft="10dp"
android:text="日期:"
android:textSize="16sp" />
<TextView
android:id="@+id/arrow_one"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="10dp"
android:background="@drawable/personal_item_arrow" />
<TextView
android:id="@+id/tv_poweroff_repeat_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginRight="5dp"
android:layout_toLeftOf="@id/arrow_one"
android:textColor="@color/black"
android:textSize="14sp" />
</RelativeLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/line_and_outline_grey" />
</LinearLayout>