pickerview_小程序pickerview样式修改 - CSDN
精华内容
参与话题
  • picker View控件使用

    2016-04-11 12:46:26
    一、实现效果  说明:点击随机按钮,能够自动选取,下方数据自动刷新。   ...2.显示数据,需要设置数据源,也有两种方式(成为数据源,遵守协议) ...4.通过代理告诉它那一列的哪一行显示哪些数据

    一、实现效果

      说明:点击随机按钮,能够自动选取,下方数据自动刷新。

      

    二、实现思路

    1.picker view的有默认高度为162,不可修改。
    2.显示数据,需要设置数据源,也有两种方式(成为数据源,遵守协议)
    3.实现数据源里面的两个方法
    1)返回一共有多少列
    2)在这一列中一共有多少行
    4.通过代理告诉它那一列的哪一行显示哪些数据(设置其代理为控制器)
    5.使用懒加载,加载所有的食物
    6.完成基本数据的展示(列,行,内容)
    7.自动更新选中的食物信息。(使用一个大的view,上面放6个label)
    1)给3个lab赋值,添加三个属性(水果,主菜,饮料)
    2)监听选中了哪一行(监听有两种思想,一个是代理,一个是通知),先查看有没有代理的方法(didselectRow)这个方法当选中了某一行的的时候调用,会将选中的列号和行号当做参数传入进去。能够获取到对应的列号和行号。
    3)完成选中时调用的监听方法
    4)在viewdidload里面设置默认选中的内容,设置为[0][1]
    5)提高可扩展性(手动的调用那几行-使用一个for循环)
    8.随机功能的实现
    1)怎么让代码选中某一行(selectrow),调用该方法可以指定让它滚动到那一列的哪一行
    2)实现头部的功能(使用一个大的uiview,里面放两个子控件)
    3)设置高度44,怎么让随机按钮的位置居中?可以设置它的高度为44,最大的Y值为64。
    4)设置随机按钮的点击事件randomFood,让pickerview主动选中某一行。
    5)生成随机数的方法(生成随机数的限制,不超过当前的总数)
    6)缺点,将来数据改变之后,会报错(模于几)[self.foods[0] count]?为什么不用简写 点语法?(切记要记住)
    7)随机数的处理不严谨,有的时候生成的随机数可能是相等的,那么这样的话列就不会滚动,获取到对应列的数据总数,如何拿到上一次产生的随机值(也就是当前选中的行),比较上一次的行号和当前生成的随机数是否相同,如果相同则重写生成
    9.解决另外一个问题,下面的数据随机刷新失效了,通过代码选中某一行。
     
    三、实现代码示例
    1.项目文档结构和storyboard文件
    storyboard文件大的界面设置:
    2.代码示例
    主控制器文件代码:
    复制代码
      1 //
      2 //  YYViewController.m
      3 //  06-简单选菜系统的实现
      4 //
      5 //  Created by apple on 14-6-5.
      6 //  Copyright (c) 2014年 itcase. All rights reserved.
      7 //
      8 
      9 #import "YYViewController.h"
     10 
     11 //遵守数据源和代理协议
     12 @interface YYViewController ()<UIPickerViewDataSource,UIPickerViewDelegate>
     13 /**
     14  *  水果
     15  */
     16 @property (strong, nonatomic) IBOutlet UILabel *fruitLab;
     17 /**
     18  *  主菜
     19  */
     20 @property (strong, nonatomic) IBOutlet UILabel *stapleLab;
     21 /**
     22  *  饮料
     23  */
     24 @property (strong, nonatomic) IBOutlet UILabel *drinkLab;
     25 /**
     26  *  保存所有的数据
     27  */
     28 @property(nonatomic,strong)NSArray *foods;
     29 @property (weak, nonatomic) IBOutlet UIPickerView *pickerView;
     30 - (IBAction)randomFood:(id)sender;
     31 
     32 @end
     33 
     34 @implementation YYViewController
     35 
     36 - (void)viewDidLoad
     37 {
     38     [super viewDidLoad];
     39     
     40     //在这里设置下方数据刷新部分的初始显示
     41     for (int component = 0; component<self.foods.count; component++) {
     42         [self pickerView:nil didSelectRow:0 inComponent:component];
     43     }
     44 }
     45 
     46 #pragma mark-使用懒加载,把数据信息加载进来
     47 -(NSArray *)foods
     48 {
     49     if (_foods==nil) {
     50         NSString *fullpath=[[NSBundle mainBundle]pathForResource:@"foods.plist" ofType:nil];
     51         NSArray *arrayM=[NSArray arrayWithContentsOfFile:fullpath];
     52         _foods=arrayM;
     53     }
     54     return _foods;
     55 }
     56 
     57 #pragma mark-处理随机按钮的点击事件
     58 - (IBAction)randomFood:(id)sender {
     59     
     60     // 让pickerView主动选中某一行
     61     // 让pickerView选中inComponent列的Row行
     62     //    [self.pickerView selectRow:1 inComponent:0 animated:YES];
     63     
     64     /*
     65      [self.pickerView selectRow: arc4random() % 12 inComponent:0 animated:YES];
     66      [self.pickerView selectRow: arc4random() % 15 inComponent:1 animated:YES];
     67      [self.pickerView selectRow: arc4random() % 10 inComponent:2 animated:YES];
     68      */
     69     
     70     //    [self.foods objectAtIndex:0]; == self.foods[0];
     71     //    [self.foods[0] count];
     72     
     73     /*
     74      // 根据每一列的元素个数生成随机值
     75      [self.pickerView selectRow: arc4random() % [self.foods[0] count] inComponent:0 animated:YES];
     76      [self.pickerView selectRow: arc4random() % [self.foods[1] count] inComponent:1 animated:YES];
     77      [self.pickerView selectRow: arc4random() % [self.foods[2] count] inComponent:2 animated:YES];
     78      */
     79     
     80     //设置一个随机数
     81     for (int component=0; component<self.foods.count; component++) {
     82         //获取当前列对应的数据元素的个数
     83         int total=[self.foods[component] count];
     84         //根据每一列的总数生成随机数(当前生成的随机数)
     85         int randomNumber=arc4random()%total;
     86         
     87         //获取当前选中的行(上一次随机后移动到的行)
     88         int oldRow=[self.pickerView selectedRowInComponent:0];
     89         
     90         //比较上一次的行号和当前生成的随机数是否相同,如果相同的话则重新生成
     91         while (oldRow==randomNumber) {
     92                 randomNumber=arc4random()%total;
     93         }
     94         
     95         //让pickerview滚动到指定的某一行
     96         [self.pickerView selectRow:randomNumber inComponent:component animated:YES];
     97         //模拟,通过代码选中某一行
     98         [self pickerView:nil didSelectRow:randomNumber inComponent:component];
     99     }
    100 }
    101 
    102 #pragma mark- 设置数据
    103 //一共多少列
    104 -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
    105 {
    106     return self.foods.count;
    107 }
    108 
    109 //每列对应多少行
    110 -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
    111 {
    112     //1.获取当前的列
    113     NSArray *arayM= self.foods[component];
    114     //2.返回当前列对应的行数
    115     return arayM.count;
    116 }
    117 
    118 //每列每行对应显示的数据是什么
    119 -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
    120 {
    121     //1.获取当前的列
    122     NSArray *arayM= self.foods[component];
    123     //2.获取当前列对应的行的数据
    124     NSString *name=arayM[row];
    125     return name;
    126 }
    127 
    128 #pragma mark-设置下方的数据刷新
    129 // 当选中了pickerView的某一行的时候调用
    130 // 会将选中的列号和行号作为参数传入
    131 // 只有通过手指选中某一行的时候才会调用
    132 -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
    133 {
    134     //获取对应列,对应行的数据
    135     NSString *name=self.foods[component][row];
    136     //赋值
    137     if (0==component) {
    138         self.fruitLab.text=name;
    139     }else if(1==component)
    140     {
    141         self.stapleLab.text=name;
    142     }else
    143         self.drinkLab.text=name;
    144 }
    145 
    146 #pragma mark-隐藏状态栏
    147 -(BOOL)prefersStatusBarHidden
    148 {
    149     return YES;
    150 }
    151 @end
    复制代码

    四、重要补充

    请注意在代码实现中为什么使用 [self.foods[0] count]; 而不是直接使用点语法self.foods[0].count取值。     

    [self.foods objectAtIndex:0]; == self.foods[0];//这两句的效果等价,而self调用objectAtIndex:0这个方法,返回的是一个id类型的万能指针,它的真实类型要到实际运行的时候才能检测得到,因此不能直接使用self.foods[0].count

    展开全文
  • PickerView

    2020-07-29 14:18:31
    PickView 时间选择器 城市选择器 选项选择器
  • Android 时间选择器 PickerView,的详细使用

    万次阅读 热门讨论 2019-04-17 11:43:11
    一、优点 1.可扩展性很强 2.三级联动 3.单项选择 4.条件 选择 二、项目下载地址demo及文档:传送门在这哦 三、效果图 四、使用步骤 1.添加Jcenter仓库 Gradle依赖: ...

     

     

     

     

    一、优点

    1.可扩展性很强

    2.三级联动

    3.单项选择

    4.条件 选择

     

    二、项目下载地址demo及文档传送门在这哦得意

     

    三、效果图

    Province.gif                    CustomLayout.gif

     

     

    XOffset.png                        TimePickerNight.gif

     

    四、使用步骤

     

    1.添加Jcenter仓库 Gradle依赖:

    compile 'com.contrarywind:Android-PickerView:3.2.7'

     

     

    2.在Activity中添加如下代码:

    默认的时间选择器

    //时间选择器
    TimePickerView pvTime = new TimePickerView.Builder(this, new TimePickerView.OnTimeSelectListener() {
                @Override
                public void onTimeSelect(Date date,View v) {//选中事件回调
                    tvTime.setText(getTime(date));
                }
            })
                 .build();
     pvTime.setDate(Calendar.getInstance());//注:根据需求来决定是否使用该方法(一般是精确到秒的情况),此项可以在弹出选择器的时候重新设置当前时间,避免在初始化之后由于时间已经设定,导致选中时间与当前时间不匹配的问题。
     pvTime.show();

     

     

     

    例子  选择出生年月日

     private void initTimePicker1() {//选择出生年月日
            //控制时间范围(如果不设置范围,则使用默认时间1900-2100年,此段代码可注释)
            //因为系统Calendar的月份是从0-11的,所以如果是调用Calendar的set方法来设置时间,月份的范围也要是从0-11
            Date curDate = new Date(System.currentTimeMillis());//获取当前时间
            SimpleDateFormat formatter_year = new SimpleDateFormat("yyyy ");
            String year_str = formatter_year.format(curDate);
            int year_int = (int) Double.parseDouble(year_str);
    
    
            SimpleDateFormat formatter_mouth = new SimpleDateFormat("MM ");
            String mouth_str = formatter_mouth.format(curDate);
            int mouth_int = (int) Double.parseDouble(mouth_str);
    
            SimpleDateFormat formatter_day = new SimpleDateFormat("dd ");
            String day_str = formatter_day.format(curDate);
            int day_int = (int) Double.parseDouble(day_str);
    
    
            Calendar selectedDate = Calendar.getInstance();//系统当前时间
            Calendar startDate = Calendar.getInstance();
            startDate.set(1900, 0, 1);
            Calendar endDate = Calendar.getInstance();
            endDate.set(year_int, mouth_int - 1, day_int);
    
            //时间选择器
            pvTime1 = new TimePickerView.Builder(this, new TimePickerView.OnTimeSelectListener() {
                @Override
                public void onTimeSelect(Date date, View v) {//选中事件回调
                    // 这里回调过来的v,就是show()方法里面所添加的 View 参数,如果show的时候没有添加参数,v则为null
                    /*btn_Time.setText(getTime(date));*/
    
                    textview1.setText(getTime(date));
                }
            })
    
                    .setType(new boolean[]{true, true, true, false, false, false}) //年月日时分秒 的显示与否,不设置则默认全部显示
                    .setLabel("年", "月", "日", "", "", "")//默认设置为年月日时分秒
                    .isCenterLabel(false)
                    .setDividerColor(Color.RED)
                     .setTextColorCenter(Color.RED)//设置选中项的颜色
                    .setTextColorOut(Color.BLUE)//设置没有被选中项的颜色
                    .setContentSize(21)
                    .setDate(selectedDate)
                    .setLineSpacingMultiplier(1.2f)
                    .setTextXOffset(-10, 0,10, 0, 0, 0)//设置X轴倾斜角度[ -90 , 90°]
                    .setRangDate(startDate, endDate)
    //                .setBackgroundId(0x00FFFFFF) //设置外部遮罩颜色
                    .setDecorView(null)
                    .build();
        }
    
        private String getTime(Date date) {//可根据需要自行截取数据显示
    //        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            return format.format(date);
        }

     

     

     

     

     

     

     

     

     

    自定义布局

     

    private void initCustomOptionPicker() {//条件选择器初始化,自定义布局
        /**
         * @description
         *
         * 注意事项:
         * 自定义布局中,id为 optionspicker 或者 timepicker 的布局以及其子控件必须要有,否则会报空指针。
         * 具体可参考demo 里面的两个自定义layout布局。
         */
        pvCustomOptions = new OptionsPickerView.Builder(this, new OptionsPickerView.OnOptionsSelectListener() {
            @Override
            public void onOptionsSelect(int options1, int option2, int options3, View v) {
                //返回的分别是三个级别的选中位置
                String tx = cardItem.get(options1).getPickerViewText();
                btn_CustomOptions.setText(tx);
            }
        })
                .setLayoutRes(R.layout.pickerview_custom_options, new CustomListener() {
                    @Override
                    public void customLayout(View v) {
                        final TextView tvSubmit = (TextView) v.findViewById(R.id.tv_finish);
                        final TextView tvAdd = (TextView) v.findViewById(R.id.tv_add);
                        ImageView ivCancel = (ImageView) v.findViewById(R.id.iv_cancel);
                        tvSubmit.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                pvCustomOptions.returnData();
                                pvCustomOptions.dismiss();
                            }
                        });
    
                        ivCancel.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                pvCustomOptions.dismiss();
                            }
                        });
    
                        tvAdd.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                getCardData();
                                pvCustomOptions.setPicker(cardItem);
                            }
                        });
    
                    }
                })
                .isDialog(true)
                .build();
    
        pvCustomOptions.setPicker(cardItem);//添加数据
    
    }

     

     

     

     

     

    三级联动

     

    pvOptions = new OptionsPickerView.Builder(this, new OptionsPickerView.OnOptionsSelectListener() {
        @Override
        public void onOptionsSelect(int options1, int options2, int options3, View v) {
            //返回的分别是三个级别的选中位置
            String tx = options1Items.get(options1).getPickerViewText()
                    + options2Items.get(options1).get(options2)
                   /* + options3Items.get(options1).get(options2).get(options3).getPickerViewText()*/;
            btn_Options.setText(tx);
        }
    })
            .setTitleText("城市选择")
            .setContentTextSize(20)//设置滚轮文字大小
            .setDividerColor(Color.LTGRAY)//设置分割线的颜色
            .setSelectOptions(0, 1)//默认选中项
            .setBgColor(Color.BLACK)
            .setTitleBgColor(Color.DKGRAY)
            .setTitleColor(Color.LTGRAY)
            .setCancelColor(Color.YELLOW)
            .setSubmitColor(Color.YELLOW)
            .setTextColorCenter(Color.LTGRAY)
            .isCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。
            .setLabels("省", "市", "区")
            .setBackgroundId(0x66000000) //设置外部遮罩颜色
            .build();
    
    //pvOptions.setSelectOptions(1,1);
    /*pvOptions.setPicker(options1Items);//一级选择器*/
    pvOptions.setPicker(options1Items, options2Items);//二级选择器
    /*pvOptions.setPicker(options1Items, options2Items,options3Items);//三级选择器*/

     

     

     

     

     

     

    时间选择器的属性大全

     

    .setType(new boolean[]{true, true, true, false, false, false}) //年月日时分秒 的显示与否,不设置则默认全部显示
    .setLabel("年", "月", "日", "", "", "")//默认设置为年月日时分秒
    .setSubmitText("确定")//确定按钮文字
    .setCancelText("取消")//取消按钮文字
    .setTitleText("请选择")//标题
    .setSubCalSize(18)//确定和取消文字大小
    .setTitleSize(20)//标题文字大小
    .setTitleColor(Color.GREEN)//标题文字颜色
    .setSubmitColor(Color.GREEN)//确定按钮文字颜色
    .setCancelColor(Color.GREEN)//取消按钮文字颜色
    .setTitleBgColor(0xFF333333)//标题背景颜色 Night mode
    .setBgColor(0xFF000000)//滚轮背景颜色 Night mode
    .setOutSideCancelable(false)//点击屏幕,点在控件外部范围时,是否取消显示
    .isCyclic(false)//是否循环滚动
    .isCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。
    .setDividerColor(Color.YELLOW)//设置分割线的颜色
    .setTextColorCenter(Color.RED)//设置选中项的颜色
    .setTextColorOut(Color.BLUE)//设置没有被选中项的颜色
    .setContentSize(21)//滚轮文字大小
    .setDate(selectedDate) 如果不设置的话,默认是系统时间*/
    .setLineSpacingMultiplier(1.2f)//设置两横线之间的间隔倍数
    .setTextXOffset(-10, 0, 10, 0, 0, 0)//设置X轴倾斜角度[ -90 , 90°]
    .setRangDate(startDate, endDate)起始终止年月日设定
    .setBackgroundId(0x00FFFFFF) //设置外部遮罩颜色
    .setDecorView(null)//设置要将pickerview显示到的容器id 必须是viewgroup
    .isDialog(false)//是否显示为对话框样式

     

     

     

     

     

     

    更多操作,请下载demo查看哦再见

     

     

     

     

     

     

     

     

     

     

    展开全文
  • pickerView的简单使用

    2019-04-24 11:25:18
    不废话直接上代码: //选择用户方法 private void selectTypeName() { String[] data = new String[]{"个人用户", "警察用户", "警辅人员用户"}; View view = View.inflate(getContext(), R.layout.include_...

    不废话直接上代码:

     

    //选择用户方法
    private void selectTypeName() {
        String[] data = new String[]{"个人用户", "警察用户", "警辅人员用户"};
        View view = View.inflate(getContext(), R.layout.include_name_type_popup, null);
        final PopupWindow popupWindow = new PopupWindow(view, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        final NumberPickerView pickerView = (NumberPickerView) view.findViewById(R.id.type_select_view);
        pickerView.setDisplayedValues(data, true);
        view.findViewById(R.id.select_jam_type_cancel).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                popupWindow.dismiss();
            }
        });
    
        view.findViewById(R.id.select_jam_type_over).setOnClickListener(new View.OnClickListener() {
            @SuppressLint("ResourceAsColor")
            @Override
            public void onClick(View v) {
                nameTypeStr = pickerView.getContentByCurrValue();
                tvTypeName.setText(nameTypeStr);
                if (nameTypeStr.equals("警察用户") || nameTypeStr.equals("警辅人员用户")) {
                    //弹出提示框
                    new RedCommomDialog((FragmentActivity) getContext(), R.style.dialog, "警察用户与警辅人员用户不参与奖金发放", new RedCommomDialog.OnCloseListener() {
                        @Override
                        public void onClick(Dialog dialog, boolean confirm) {
                            if (confirm) {
                                dialog.dismiss();
                            }
                        }
                    }).setTitle("提示").show();
                }
                popupWindow.dismiss();
            }
        });
        View mParent = View.inflate(this, R.layout.verified_registered_activity, null);
        popupWindow.showAtLocation(mParent, Gravity.NO_GRAVITY, 0, 0);
    }

    //布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#66000000">
    
        <LinearLayout
            android:id="@+id/animation_show"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:background="@android:color/white"
            android:orientation="vertical">
    
            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingBottom="10dp"
                android:paddingTop="10dp">
    
                <TextView
                    android:id="@+id/select_jam_type_cancel"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:paddingLeft="10dp"
                    android:paddingRight="10dp"
                    android:text="@string/cancel"
                    android:textColor="@color/theme_color"
                    android:textSize="14dp" />
    
                <!--<TextView-->
                    <!--android:id="@+id/leixing_id"-->
                    <!--android:layout_width="wrap_content"-->
                    <!--android:layout_height="wrap_content"-->
                    <!--android:layout_gravity="center_horizontal"-->
                    <!--android:text="@string/select_jam_type"-->
                    <!--android:textColor="@color/font_color"-->
                    <!--android:textSize="16dp" />-->
    
                <TextView
                    android:id="@+id/select_jam_type_over"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right"
                    android:paddingLeft="10dp"
                    android:paddingRight="10dp"
                    android:text="@string/complete"
                    android:textColor="@color/theme_color"
                    android:textSize="14dp" />
            </FrameLayout>
    
            <cn.carbswang.android.numberpickerview.library.NumberPickerView
                android:id="@+id/type_select_view"
                android:layout_width="match_parent"
                android:layout_height="140dp"
                app:npv_DividerColor="@color/divider_line"
                app:npv_DividerHeight="1dp"
                app:npv_ShowCount="3"
                app:npv_TextColorHint="@color/theme_color2"
                app:npv_TextColorNormal="@color/font_color3"
                app:npv_TextColorSelected="@color/font_color"
                app:npv_ItemPaddingVertical="15dp"
                app:npv_TextSizeHint="22dp"
                app:npv_TextSizeNormal="12dp"
                app:npv_WrapSelectorWheel="false"
                app:npv_TextSizeSelected="15dp" />
        </LinearLayout>
    </FrameLayout>

    //依赖

    compile 'cn.carbswang.android:NumberPickerView:1.1.0'

    注释:主体都在这。一:为自己做个记录并分享给大家  不喜勿喷,谢谢!

     

    展开全文
  • 小程序picker-view的使用

    千次阅读 2018-02-02 10:14:28
    小程序picker-view的使用 {{item}}年 {{item}}月 {{item}}日

    小程序picker-view的使用


    <picker-view indicator-style="height: 50px;" style="width: 100%;font-size: 14px;" value="{{value}}" bindchange="bindChange" class="pickerView" wx:if="{{showPicker}}" data-id="pickerFloat">
    <picker-view-column>
    <view wx:for="{{years}}" style="line-height: 50px">{{item}}年</view>
    </picker-view-column>
    <picker-view-column>
    <view wx:for="{{months}}" style="line-height: 50px">{{item}}月</view>
    </picker-view-column>
    <picker-view-column>
    <view wx:for="{{days}}" style="line-height: 50px">{{item}}日</view>
    </picker-view-column>
    <picker-view-column>
    <view wx:for="{{hours}}" style="line-height: 50px">{{item}}时</view>
    </picker-view-column>
    <picker-view-column>
    <view wx:for="{{mins}}" style="line-height: 50px">{{item}}分</view>
    </picker-view-column>
    </picker-view>
    </view>

    const date = new Date()
    const years = [];
    const months = [];
    const days = [];
    const hours = [];
    const mins = [];
       for (let i = 2017; i <= date.getFullYear()+1; i++) {
            years.push(""+i)
       }
        for (let i = 1 ; i <= 12; i++) {
          if(i < 10){
            i =  '0' + i;
          }
          months.push(""+i)
        }
    
    for (let i = 1 ; i <= 31; i++) {
      if(i < 10){
        i =  '0' + i;
      }
      days.push(""+i)
    }
    
    for (let i = 0 ; i <= 23; i++) {
      if(i < 10){
        i =  '0' + i;
      }
      hours.push(""+i)
    }
    
    for (let i = 0 ; i <= 59; i++) {
          if(i < 10){
            i =  '0' + i;
          }
          mins.push(""+i)
    }
    Page({
        data:{
            // 日期的数据
            years: years,
            year: date.getFullYear(),
            months: months,
            month1: 2,
            days: days,
            day: 2,
            hours: hours,
            hour: 9,
            mins: mins,
            min: 16,
            showPicker: false,
            value:[]
        }   ,
        // 改变日期
      bindChange: function(e) {
        const val = e.detail.value
        this.setData({
          year: this.data.years[val[0]],
          month1: this.data.months[val[1]],
          day: this.data.days[val[2]],
          hour:this.data.hours[val[3]],
          min: this.data.mins[val[4]],
          value:[val[0],val[1],val[2],val[3],val[4]]
        })
        this.setData({
          endTime:this.data.year+'-'+this.data.month1+'-'+this.data.day+' '+this.data.hour+':'+this.data.min+':00'
        })
      },
      showPicker: function(){
        this.setData({showPicker: true})
      },
      closePickerFloat: function(e){
        console.log(e)
        if(e.target.dataset.id !== "pickerFloat" && e.target.dataset.id !== "write" ){
          this.setData({showPicker: false})
        }
      } 
    
    })
    

    “`

    展开全文
  • Android-PickerView系列之介绍与使用篇(一)

    万次阅读 多人点赞 2018-02-23 18:32:52
    Android-PickerView是一款仿iOS的PickerView控件,并封装了时间选择和选项选择这两种选择器,详细特性如下: WheelView —— 基础控件 带有3D圆弧效果。 支持文字、颜色、大小设置。 支持背景颜色设置。 支持...
  • Android-PickerView的简单封装与使用

    万次阅读 热门讨论 2020-05-09 14:55:31
    前言:这是一款仿iOS的PickerView控件,有时间选择器和选项选择,支持年月日时分,年月日,时分等格式。 主要目的:百度上有非常多写这个开源项目的用法,不过大多数都是照搬github上面复制过来的,少有人说明该...
  • implementation 'com.contrarywind:Android-PickerView:4.1.8' Bean回调 package com.example.gaowen38.data.bean; import com.contrarywind.interfaces.IPickerViewData; public class ProvinceBean implem.....
  • Android-PickerView是一个多功能的滚动控件,包含了单项选择,时间选择,位置选择等等多级选择功能。 具体用法请参照github 今天解决的问题就是,打包混淆后,无法使用的问题,我看好多提问者问了此问题Android-...
  • 精仿iOS的PickerView控件,有时间选择和选项选择并支持一二三级联动效果——TimePickerView 时间选择器,支持年月日时分,年月日,年月,时分等格式——OptionsPickerView 选项选择器,支持一,二,三级选项选择,...
  • Android-PickerView框架的简单使用

    千次阅读 2019-01-21 15:55:41
    参考GitHub:https://github.com/Bigkoo/Android-PickerView 这个框架的效果感觉不错,但是作者不得不让人吐槽,但是没办法,人家效果好,还得想办法用,接下来我写的比较基础简单,其他方法设置可以去GitHub或Demo...
  • 这里贡献下我使用Android-PickerView实现地址选择器遇到的坑,算是一个笔记。首先要吐槽下后台接口,为了实现移动端和web端的统一(ps:可能他没搞过后台接口),修改地址的时候本来要用下拉框。。。我去,后面ios的...
  • 仿ios的PickerView

    2017-12-23 14:07:11
    接下来看一下它是怎么实现的: 具体的pickerView,我使用了一个第三方写的,这里就不贴上代码了。 主要是看一下,dialog与pickerView的结合使用: 首先是这个布局:中间是一个PickerView <Li
  • Android-PickerView系列之源码解析篇(二)

    万次阅读 多人点赞 2019-01-23 15:38:37
     以上是Android-PickerView 的demo演示图,它有时间选择和选项选择,并支持一二三级联动,支持自定义样式。  由于saiwu-bigkoo(吴哥)已经转行不干编程了,项目现已转交由我更新维护。目前我更新了
  • 项目需求是城市三级联动以及时间的选择器 通过百度的查找,在网上找到了一个示例代码,很有帮助,通过示例代码,我很快的解决了时间的选择,然而在...2、直接通过集合,再通过PickerView来显示,将WheelView改成之前用...
  • 在项目开发中Android基本都是在跟随ios的风格,前段时间产品经理就要求按照ios的效果,做时间、城市选择效果,真要全部自己写还真有点蛋疼,所以在网上一搜,效果不少,其中PickerView用的人还是蛮多的,所以就决定...
  • PickerView(二级联动)

    千次阅读 2020-01-14 10:16:05
    最近新学会了一个技能 不敢说写的详细所以在此贴上大佬的博客地址 借鉴博客 写的很详细 ...PickerView框架:实现联动很方便 一级二级三级都差不多 先上一个二级联动的图 任务是把一个json.txt的文...
  •  之前自己做项目的时候需要用到省市区三级联动的效果,本来想自己做一个,可是后来看到了github上的开源项目pickerView,个人感觉非常好用,然后去百度的时候发现好多人的博客写的太过于简单,好多人是直接复制...
  • Android-PickerView的使用

    千次阅读 2017-03-16 12:41:07
    介绍Android-PickerView是一款仿iOS的PickerView控件,有时间选择和选项选择,并支持一、二、三级联动。 有时间和选项这两种选择器 选项选择器支持一二三级联动 时间选择器支持选择年份范围 支持自定义文字、颜色、...
  • 以前很少自己写demo,都是直接用到程序上,不行再改,其实这样越写思路越乱,...首先在build.gradle文件中添加 compile 'com.contrarywind:Android-PickerView:3.2.5'这是3.X版本哦,比2.X的更新了: 1、代码简洁 2、
1 2 3 4 5 ... 20
收藏数 3,808
精华内容 1,523
关键字:

pickerview