个人使用pickview的简单记录

 

添加依赖

compile 'com.contrarywind:Android-PickerView:4.1.6'
private List<String> options1Items = new ArrayList<>();

private OptionsPickerView pvOptions;
@Override
protected void initData() {
    for (int i = 1 ;i < 25 ; i ++){
        options1Items.add(""+i);
    }
    initOptionPicker();
    initTimePicker();
}
@Override
public void onClick(View v) {
    switch (v.getId()){
        case R.id.add_startTime:
            pvTime.show(v);//弹出时间选择器,传递参数过去,回调的时候则可以绑定此view
            break;
        case R.id.add_planTime:
              onOptionPicker(v);
            pvOptions.show(); //弹出条件选择器
            break;
    }
}
private void initOptionPicker() {//条件选择器初始化

        /**
         * 注意 :如果是三级联动的数据(省市区等),请参照 JsonDataActivity 类里面的写法。
         */

        pvOptions = new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
            @Override
            public void onOptionsSelect(int options1, int options2, int options3, View v) {
                //返回的分别是三个级别的选中位置
//                String tx = options1Items.get(options1)
//                add_planTime.setText(tx);
            }
        })
                .setTitleText("计划时长")
                .setContentTextSize(20)//设置滚轮文字大小
                .setDividerColor(Color.rgb(240,240,240))//设置分割线的颜色
                .setSelectOptions(0, 1)//默认选中项
                .setBgColor(Color.WHITE)
                .setTitleBgColor(Color.rgb(245,245,245))
                .setTitleColor(Color.BLACK)
                .setCancelColor(Color.rgb(28,134,238))
                .setSubmitColor(Color.rgb(28,134,238))
                .setTextColorCenter(Color.BLACK)
                .isRestoreItem(true)//切换时是否还原,设置默认选中第一项。
                .isCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。
                .setLabels("时", "", "")
                .setOptionsSelectChangeListener(new OnOptionsSelectChangeListener() {
                    @Override
                    public void onOptionsSelectChanged(int options1, int options2, int options3) {
                        String str = "options1: " + options1;
                        Toast.makeText(NewTaskActivity.this, str, Toast.LENGTH_SHORT).show();
                    }
                })
                .build();

//        pvOptions.setSelectOptions(1,1);
        pvOptions.setPicker(options1Items);//一级选择器

    }

以上为单项选择代码

以下为日期选择代码

 

private TimePickerView pvTime;
//Dialog 模式下,在底部弹出
    private void initTimePicker() {

        pvTime = new TimePickerBuilder(this, new OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date, View v) {
                Toast.makeText(NewTaskActivity.this, getTime(date), Toast.LENGTH_SHORT).show();
                Log.i("pvTime", "onTimeSelect");

            }
        })
                .setTimeSelectChangeListener(new OnTimeSelectChangeListener() {
                    @Override
                    public void onTimeSelectChanged(Date date) {
                        Log.i("pvTime", "onTimeSelectChanged");
                    }
                })
                .setType(new boolean[]{true, true, true, true, true, true})
                .isDialog(true) //默认设置false ,内部实现将DecorView 作为它的父控件。
                .build();

        Dialog mDialog = pvTime.getDialog();
        if (mDialog != null) {

            FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
                    ViewGroup.LayoutParams.MATCH_PARENT,
                    ViewGroup.LayoutParams.WRAP_CONTENT,
                    Gravity.BOTTOM);

            params.leftMargin = 0;
            params.rightMargin = 0;
            pvTime.getDialogContainerLayout().setLayoutParams(params);

            Window dialogWindow = mDialog.getWindow();
            if (dialogWindow != null) {
                dialogWindow.setWindowAnimations(com.bigkoo.pickerview.R.style.picker_view_slide_anim);//修改动画样式
                dialogWindow.setGravity(Gravity.BOTTOM);//改成Bottom,底部显示
            }
        }
    }

    private String getTime(Date date) {//可根据需要自行截取数据显示
        Log.d("getTime()", "choice date millis: " + date.getTime());
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return format.format(date);
    }

 

相关文章:

  • 2021-09-17
  • 2021-06-08
  • 2021-11-22
  • 2021-08-20
  • 2021-08-27
  • 2021-06-20
  • 2021-06-22
  • 2022-12-23
猜你喜欢
  • 2021-09-07
  • 2021-12-17
  • 2022-03-03
  • 2021-11-18
  • 2022-12-23
  • 2021-12-26
  • 2021-05-28
相关资源
相似解决方案