Android:时间选择器PickerView的使用

效果图

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>

猜你喜欢

转载自blog.csdn.net/m0_58241002/article/details/124951281