Giter Club home page Giter Club logo

android-pickerview's Introduction

注意⚠️:已停止更新,原有版本jcenter库可以继续使用。建议直接下载源码引入 module 到自己项目改造。

Android-PickerView

API License Download

GitHub stars GitHub forks GitHub watchers

注意事项、详请使用方式、更新日志等,请查看 Wiki文档

Wiki文档,Wiki文档,Wiki文档 !~ 重要的事情说三遍

对于使用上有任何疑问或优化建议等,欢迎加入QQ群讨论交流技术问题。

交流群1: 387051294(已满)

交流群2: 219962328(已满)

介绍

这是一款仿iOS的PickerView控件,有时间选择器和选项选择器,新版本的详细特性如下:

——TimePickerView 时间选择器,支持年月日时分,年月日,年月,时分等格式。
——OptionsPickerView 选项选择器,支持一,二,三级选项选择,并且可以设置是否联动 。

  • 支持三级联动
  • 设置是否联动
  • 设置循环模式
  • 支持自定义布局。
  • 支持item的分隔线设置。
  • 支持item间距设置。
  • 时间选择器支持起始和终止日期设定。
  • 支持“年,月,日,时,分,秒”,“省,市,区”等选项的单位(label)显示、隐藏和自定义。
  • 支持自定义文字、颜色、文字大小等属性
  • Item的文字长度过长时,文字会自适应缩放到Item的长度,避免显示不完全的问题
  • 支持Dialog 模式。
  • 支持自定义设置容器。
  • 实时回调。

TimePicker.gif TimePickerNight.gif lunar.gif XOffset.png Province.gif CustomLayout.gif

有兴趣研究3D滚轮效果的实现机制,希望把源码研究透彻的可以看看这篇博客:

使用注意事项

  • 注意:当我们进行设置时间的启始位置时,需要特别注意月份的设定
  • 原因:Calendar组件内部的月份,是从0开始的,即0-11代表1-12月份
  • 错误使用案例: startDate.set(2013,1,1);  endDate.set(2020,12,1);
  • 正确使用案例: startDate.set(2013,0,1);  endDate.set(2020,11,1);

V4.1.9 版本更新说明(2019-10-20)

  • 修复: 农历 day 偶现越界的问题。
  • 优化: 显示布局中英文默认大写问题。
  • 新增: 最大可见项的数目提供API给开发者设置。(setItemVisibleCount())
  • 新增: 滚轮从中间到两边透明度渐变,提供开关API设置。(isAlphaGradient(true))
  • 新增: 选中项圆形分割线样式。(DividerType.CIRCLE)

V4.1.8 版本更新说明(2019-4-24)

  • 更新gradle版本, wheelview基础库由 compile 改为 api 依赖,避免gradle 5.0+版本无法引入。
  • 修复 setTextXOffset 赋值问题。

V4.1.7 版本更新说明(2019-1-10)

  • 修复 WheelView在初始化时,数据为空导致height=0,造成一直显示不出来的问题。
  • 新增取消按钮的点击事件监听入口。
  • 参数注解添加,规范数据类型。
  • 废弃setBackgroundId方法, 更新方法命名为 setOutSideColor。

更多历史版本详情,请查阅:更新日志(4.x版本)

方法名与参数请查阅:方法名与参数说明文档


如何使用:

Android-PickerView 库使用示例:

1.添加Jcenter仓库 Gradle依赖:

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

或者

Maven

<dependency>
<groupId>com.contrarywind</groupId>
<artifactId>Android-PickerView</artifactId>
<version>4.1.9</version>
<type>pom</type>
</dependency>

2.在项目中添加如下代码:

//时间选择器
TimePickerView pvTime = new TimePickerBuilder(MainActivity.this, new OnTimeSelectListener() {
                           @Override
                           public void onTimeSelect(Date date, View v) {
                               Toast.makeText(MainActivity.this, getTime(date), Toast.LENGTH_SHORT).show();
                           }
                       }).build();
//条件选择器
 OptionsPickerView pvOptions = new OptionsPickerBuilder(MainActivity.this, new OnOptionsSelectListener() {
            @Override
            public void onOptionsSelect(int options1, int option2, int options3 ,View v) {
                //返回的分别是三个级别的选中位置
                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, options2Items, options3Items);
 pvOptions.show(); 

大功告成~

3.如果默认样式不符合你的口味,可以自定义各种属性:

 Calendar selectedDate = Calendar.getInstance();
 Calendar startDate = Calendar.getInstance();
 //startDate.set(2013,1,1);
 Calendar endDate = Calendar.getInstance();
 //endDate.set(2020,1,1);
 
  //正确设置方式 原因:注意事项有说明
  startDate.set(2013,0,1);
  endDate.set(2020,11,31);

 pvTime = new TimePickerBuilder(this, new OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date,View v) {//选中事件回调
                tvTime.setText(getTime(date));
            }
        })
                .setType(new boolean[]{true, true, true, true, true, true})// 默认全部显示
                .setCancelText("Cancel")//取消按钮文字
                .setSubmitText("Sure")//确认按钮文字
                .setContentSize(18)//滚轮文字大小
                .setTitleSize(20)//标题文字大小
                .setTitleText("Title")//标题文字
                .setOutSideCancelable(false)//点击屏幕,点在控件外部范围时,是否取消显示
                .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();
pvOptions = new  OptionsPickerBuilder(this, new OptionsPickerView.OnOptionsSelectListener() {
            @Override
            public void onOptionsSelect(int options1, int option2, int options3 ,View v) {
                //返回的分别是三个级别的选中位置
                String tx = options1Items.get(options1).getPickerViewText()
                        + options2Items.get(options1).get(option2)
                        + options3Items.get(options1).get(option2).get(options3).getPickerViewText();
                tvOptions.setText(tx);
            }
        }) .setOptionsSelectChangeListener(new OnOptionsSelectChangeListener() {
                              @Override
                              public void onOptionsSelectChanged(int options1, int options2, int options3) {
                                  String str = "options1: " + options1 + "\noptions2: " + options2 + "\noptions3: " + options3;
                                  Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
                              }
                          })
                .setSubmitText("确定")//确定按钮文字
                .setCancelText("取消")//取消按钮文字
                .setTitleText("城市选择")//标题
                .setSubCalSize(18)//确定和取消文字大小
                .setTitleSize(20)//标题文字大小
                .setTitleColor(Color.BLACK)//标题文字颜色
                .setSubmitColor(Color.BLUE)//确定按钮文字颜色
                .setCancelColor(Color.BLUE)//取消按钮文字颜色
                .setTitleBgColor(0xFF333333)//标题背景颜色 Night mode
                .setBgColor(0xFF000000)//滚轮背景颜色 Night mode
                .setContentTextSize(18)//滚轮文字大小
                .setLinkage(false)//设置是否联动,默认true
                .setLabels("省", "市", "区")//设置选择的三级单位
                .isCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。
                .setCyclic(false, false, false)//循环与否
                .setSelectOptions(1, 1, 1)  //设置默认选中项
                .setOutSideCancelable(false)//点击外部dismiss default true
                .isDialog(true)//是否显示为对话框样式
                .isRestoreItem(true)//切换时是否还原,设置默认选中第一项。
                .build();

        pvOptions.setPicker(options1Items, options2Items, options3Items);//添加数据源

4.如果需要自定义布局:

        // 注意:自定义布局中,id为 optionspicker 或者 timepicker 的布局以及其子控件必须要有,否则会报空指针
        // 具体可参考demo 里面的两个自定义布局
        pvCustomOptions = new OptionsPickerBuilder(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(tvSubmit);
                            }
                        });
                        ivCancel.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                pvCustomOptions.dismiss();
                            }
                        });

                        tvAdd.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                getData();
                                pvCustomOptions.setPicker(cardItem);
                            }
                        });

                    }
                })
                .build();
        pvCustomOptions.setPicker(cardItem);//添加数据

5.对使用还有疑问的话,可参考demo代码

请戳我查看demo代码

6.若只需要WheelView基础控件自行扩展实现逻辑,可直接添加基础控件库,Gradle 依赖:

compile 'com.contrarywind:wheelview:4.1.0'

WheelView 使用代码示例:

xml布局:

 <com.contrarywind.view.WheelView
            android:id="@+id/wheelview"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

Java 代码:

WheelView wheelView = findViewById(R.id.wheelview);

        wheelView.setCyclic(false);

        final List<String> mOptionsItems = new ArrayList<>();
        mOptionsItems.add("item0");
        mOptionsItems.add("item1");
        mOptionsItems.add("item2");
  
        wheelView.setAdapter(new ArrayWheelAdapter(mOptionsItems));
        wheelView.setOnItemSelectedListener(new OnItemSelectedListener() {
            @Override
            public void onItemSelected(int index) {
                Toast.makeText(MainActivity.this, "" + mOptionsItems.get(index), Toast.LENGTH_SHORT).show();
            }
        });

效果图(招行信用卡的“掌上生活”里面条件选择器他们用的就是我这个库,大家可以当实际项目参考)

Thanks

License

Copyright 2014 Bigkoo
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

android-pickerview's People

Contributors

alamops avatar danielbenedykt avatar gl-git-hub avatar greatgarlic avatar keluokeda avatar kyuyi avatar lxt1994 avatar mankinchung avatar mickyliu945 avatar muyangmin avatar saiwu-bigkoo avatar totcw avatar xiandanin avatar xiaosong520 avatar xuwab avatar xxjy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

android-pickerview's Issues

时间初始化无效

pwTime.showAtLocation(tvTime, Gravity.BOTTOM, 0, 0,new Date());

上面这句的new Date() 替换成其他时间,弹出的时候的初始化依旧是当前时间。
用 setTime 也无效。每次显示都依旧是当前最新时间。

pwTime = new TimePopupWindow(this, Type.YEAR_MONTH_DAY);

时间类型选的是年月日。

还有时间类型的按钮上方少一条灰色的线,掌上生活界面是看到有的。
image

image

日期时间选择器数字0-9前补0

        yearView.setAdapter(new DateTimeAdapter(1970, 2015));
        yearView.setLabel("年");
        monthView.setAdapter(new DateTimeAdapter(1, 12));
        monthView.setLabel("月");
        dayView.setAdapter(new DateTimeAdapter(1, calculateDaysInMonth(year, month + 1)));
        dayView.setLabel("日");
        hourView.setAdapter(new DateTimeAdapter(0, 23));
        hourView.setLabel("时");
        minuteView.setAdapter(new DateTimeAdapter(0, 59));
        minuteView.setLabel("分");

    private int calculateDaysInMonth(int year, int month) {
        // 添加大小月月份并将其转换为list,方便之后的判断
        String[] bigMonths = {"1", "3", "5", "7", "8", "10", "12"};
        String[] littleMonths = {"4", "6", "9", "11"};
        List<String> bigList = Arrays.asList(bigMonths);
        List<String> littleList = Arrays.asList(littleMonths);
        // 判断大小月及是否闰年,用来确定"日"的数据
        if (bigList.contains(String.valueOf(month))) {
            return 31;
        } else if (littleList.contains(String.valueOf(month))) {
            return 30;
        } else {
            // 是否闰年
            if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
                return 29;
            } else {
                return 28;
            }
        }
    }
    private class DateTimeAdapter extends WheelNumericAdapter {

        public DateTimeAdapter() {
            super();
        }

        public DateTimeAdapter(int minValue, int maxValue) {
            super(minValue, maxValue);
        }

        public DateTimeAdapter(int minValue, int maxValue, String format) {
            super(minValue, maxValue, format);
        }

        @Override
        public String getItem(int index) {
            String item = super.getItem(index);
            // FIXME: 2015/10/22 0-9前面补0
            if (item != null && item.length() == 1) {
                item = "0" + item;
            }
            return item;
        }

    }

2.0不支持自定义选项字体颜色?

我通过xml方式可以覆盖布局,实现自定义背景及标题栏背景,但是选项文字颜色无法自定义, 只能修改源码?
com.bigkoo.pickerview.lib.WheelView: line(129):
colorGray = 0xffafafaf;
colorBlack = 0xff313131;
colorLightGray = 0xffc5c5c5;
image
image

选择最后或者第一个的时候滚轮会一直抖动(2.0.6)

*在选择最后一个Item的时候,滚轮一直抖动。这个不管是demo还是我自己自定义的都会这样。
*然后另外一个问题,我自己根据时间选择器改造的一个demo,当月份只有3个item的时候,第一个会选不到,然后会一直抖动,选不到的我现在不知道是我的代码问题还是库的问题。

*原谅渣渣的我直接用百度网盘分享录屏给你:{http://pan.baidu.com/s/1qWRbGLm}

反复点击滚轴crash

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
01-14 10:01:25.105 17155-17155/? E/AndroidRuntime: at com.bigkoo.pickerview.adapter.NumericWheelAdapter.indexOf(NumericWheelAdapter.java:52)
01-14 10:01:25.105 17155-17155/? E/AndroidRuntime: at com.bigkoo.pickerview.lib.WheelView.onDraw(WheelView.java:413)

有错别符号

compile 'com.bigkoo:pickerview:2.0.2’
后面的引号是中文的,然后我直接粘贴进Gradle文件中了,中枪。。。

更换对话框头部布局后报错

您好,我想在项目中使用您的这个库,不过对话框的头部样式不是很合适,所以想自己更换一个布局,去掉了取消按钮,运行之后一直报错。
java.lang.NoSuchFieldError: No static field btnSubmit of type I in class Lcom/bigkoo/pickerview/R$id; or its superclasses (declaration of 'com.bigkoo.pickerview.R$id' appears in /data/app/com.rdwl.rql-1/base.apk)
at com.bigkoo.pickerview.TimePickerView.(TimePickerView.java:34)
at com.rdwl.rql.company.activities.InformInterviewAty.init(InformInterviewAty.java:77)
at com.saxxhw.lib.base.BaseActivity.onCreate(BaseActivity.java:50)
at com.rdwl.rql.base.RqlBaseAty.onCreate(RqlBaseAty.java:38)
at android.app.Activity.performCreate(Activity.java:6142)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1115)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2514)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2642)
at android.app.ActivityThread.access$800(ActivityThread.java:177)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1511)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5670)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:972)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
请问这是什么错误?

滑动的幅度太大问题

当选项只有几个的时候,迅速上滑下滑所有选项会消失,然后过1秒左右才回来,请问有解决方法么?ios原生的没有这个问题。掌上生活也没有这个问题。。

或者说怎么控制WheelView的滑动幅度?

setBackgroundDrawable问题

这个方法现在不太好用而且sdk已经去掉了获取drawable的api,麻烦添加几个类似setbackgroundcolor的api或者改用getdrawableresource。谢谢

compile 不成功

已经在我的项目里 compile 'com.bigkoo:pickerview:1.0.3',但是没有发现download下来,也不能引用。请检查下是否是原始地址有问题

性能与1.x相比 有很大问题

pick range 100-1000
101 102.。。。。1000
两个问题。
1。弹框出来的太慢 ,卡ui
2。滑动选择太慢,比如从500 要选择100,简直要滑到死

1.x 不会有这样的问题

点空白处报ClassCastException

如点年份上面的空白处,其它如月、日...也会

*代码

 final TimePickerView pvTime = new TimePickerView(this, TimePickerView.Type.ALL);
        //控制时间范围
        Calendar calendar = Calendar.getInstance();
        pvTime.setRange(calendar.get(Calendar.YEAR), calendar.get(Calendar.YEAR)+1);
        pvTime.setTime(new Date());
        pvTime.setCyclic(false);
        pvTime.setCancelable(true);
        //时间选择后回调
        pvTime.setOnTimeSelectListener(new TimePickerView.OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date) {
                Log.i("wg", new SimpleDateFormat("yyyy-MM-dd HH:mm").format(date));
            }
        });
        findViewById(R.id.btn_selTime).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                pvTime.show();
            }
        });

*错误信息
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
at com.bigkoo.pickerview.adapter.NumericWheelAdapter.indexOf(NumericWheelAdapter.java:52)
at com.bigkoo.pickerview.lib.WheelView.onDraw(WheelView.java:413)
at android.view.View.draw(View.java:15255)
at android.view.View.buildDrawingCacheImpl(View.java:14501)
at android.view.View.buildDrawingCache(View.java:14363)
at android.view.View.updateDisplayListIfDirty(View.java:14172)
at android.view.View.getDisplayList(View.java:14213)
at android.view.View.draw(View.java:14983)
at android.view.ViewGroup.drawChild(ViewGroup.java:3406)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3199)
at android.view.View.draw(View.java:15258)
at android.view.View.updateDisplayListIfDirty(View.java:14191)
at android.view.View.getDisplayList(View.java:14213)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3390)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3369)
at android.view.View.updateDisplayListIfDirty(View.java:14151)
at android.view.View.getDisplayList(View.java:14213)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3390)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3369)
at android.view.View.updateDisplayListIfDirty(View.java:14151)
at android.view.View.getDisplayList(View.java:14213)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3390)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3369)
at android.view.View.updateDisplayListIfDirty(View.java:14151)
at android.view.View.getDisplayList(View.java:14213)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3390)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3369)
at android.view.View.updateDisplayListIfDirty(View.java:14151)
at android.view.View.getDisplayList(View.java:14213)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3390)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3369)
at android.view.View.updateDisplayListIfDirty(View.java:14151)
at android.view.View.getDisplayList(View.java:14213)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3390)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3369)
at android.view.View.updateDisplayListIfDirty(View.java:14151)
at android.view.View.getDisplayList(View.java:14213)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3390)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3369)
at android.view.View.updateDisplayListIfDirty(View.java:14151)
at android.view.View.getDisplayList(View.java:14213)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3390)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3369)
at android.view.View.updateDisplayListIfDirty(View.java:14151)
at android.view.View.getDisplayList(View.java:14213)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:276)
at
android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:282)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:317)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2541)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2354)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1984)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1062)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5911)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:787)
at android.view.Choreographer.doCallbacks(Choreographer.java:600)
at android.view.Choreographer.doFrame(Choreographer.java:570)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:773)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(

时间选择的器起始时间

private static int START_YEAR = 1990, END_YEAR = 2100;

这个是不是太大了......很多人的出生年月期都是90年之前

问下控件开发环境是什么样的

下面3个任务通不过
image
错误提示如下

下午3:41:11: Executing external task 'javadoc'...
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/WheelOptions.java:7: 错误: 找不到符号
import com.bigkoo.pickerview.R;
                            ^
  符号:   类 R
  位置: 程序包 com.bigkoo.pickerview
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/WheelView.java:25: 错误: 找不到符号
import com.bigkoo.pickerview.R;
                            ^
  符号:   类 R
  位置: 程序包 com.bigkoo.pickerview
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/WheelTime.java:8: 错误: 找不到符号
import com.bigkoo.pickerview.R;
                            ^
  符号:   类 R
  位置: 程序包 com.bigkoo.pickerview
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/DensityUtil.java:11: 警告: context没有 @param
    public static int dip2px(Context context, float dpValue) {
                      ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/DensityUtil.java:11: 警告: dpValue没有 @param
    public static int dip2px(Context context, float dpValue) {
                      ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/DensityUtil.java:11: 警告: 没有 @return
    public static int dip2px(Context context, float dpValue) {
                      ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/DensityUtil.java:20: 警告: context没有 @param
    public static int px2dip(Context context, float pxValue) {
                      ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/DensityUtil.java:20: 警告: pxValue没有 @param
    public static int px2dip(Context context, float pxValue) {
                      ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/DensityUtil.java:20: 警告: 没有 @return
    public static int px2dip(Context context, float pxValue) {
                      ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/OnWheelChangedListener.java:6: 错误: 此处不允许使用标记: <li>
 * <li> New Wheel position is set
   ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/OnWheelChangedListener.java:7: 错误: 此处不允许使用标记: <li>
 * <li> Wheel view is scrolled
   ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/WheelOptions.java:124: 警告: @param 没有说明
     * @param label1
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/WheelOptions.java:125: 警告: @param 没有说明
     * @param label2
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/WheelOptions.java:126: 警告: @param 没有说明
     * @param label3
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/WheelOptions.java:140: 警告: @param 没有说明
     * @param cyclic
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/WheelOptions.java:151: 警告: @return 没有说明
     * @return
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/WheelTime.java:69: 错误: 未知标记: Description
     * @Description: TODO 弹出日期时间选择器
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/WheelTime.java:71: 警告: year没有 @param
    public void setPicker(int year ,int month ,int day,int h,int m) {
                ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/WheelTime.java:71: 警告: month没有 @param
    public void setPicker(int year ,int month ,int day,int h,int m) {
                ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/WheelTime.java:71: 警告: day没有 @param
    public void setPicker(int year ,int month ,int day,int h,int m) {
                ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/WheelTime.java:71: 警告: h没有 @param
    public void setPicker(int year ,int month ,int day,int h,int m) {
                ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/WheelTime.java:71: 警告: m没有 @param
    public void setPicker(int year ,int month ,int day,int h,int m) {
                ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/WheelTime.java:223: 警告: @param 没有说明
     * @param cyclic
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/WheelView.java:161: 警告: context没有 @param
    public WheelView(Context context) {
           ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/WheelView.java:153: 警告: context没有 @param
    public WheelView(Context context, AttributeSet attrs) {
           ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/WheelView.java:153: 警告: attrs没有 @param
    public WheelView(Context context, AttributeSet attrs) {
           ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/WheelView.java:145: 警告: context没有 @param
    public WheelView(Context context, AttributeSet attrs, int defStyle) {
           ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/WheelView.java:145: 警告: attrs没有 @param
    public WheelView(Context context, AttributeSet attrs, int defStyle) {
           ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/lib/WheelView.java:145: 警告: defStyle没有 @param
    public WheelView(Context context, AttributeSet attrs, int defStyle) {
           ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/OptionsPopupWindow.java:74: 警告: @param 没有说明
     * @param option1
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/OptionsPopupWindow.java:81: 警告: @param 没有说明
     * @param option1
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/OptionsPopupWindow.java:82: 警告: @param 没有说明
     * @param option2
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/OptionsPopupWindow.java:89: 警告: @param 没有说明
     * @param option1
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/OptionsPopupWindow.java:90: 警告: @param 没有说明
     * @param option2
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/OptionsPopupWindow.java:91: 警告: @param 没有说明
     * @param option3
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/OptionsPopupWindow.java:98: 警告: @param 没有说明
     * @param label1
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/OptionsPopupWindow.java:105: 警告: @param 没有说明
     * @param label1
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/OptionsPopupWindow.java:106: 警告: @param 没有说明
     * @param label2
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/OptionsPopupWindow.java:113: 警告: @param 没有说明
     * @param label1
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/OptionsPopupWindow.java:114: 警告: @param 没有说明
     * @param label2
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/OptionsPopupWindow.java:115: 警告: @param 没有说明
     * @param label3
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/OptionsPopupWindow.java:122: 警告: @param 没有说明
     * @param cyclic
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/TimePopupWindow.java:77: 警告: @param 没有说明
     * @param START_YEAR
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/TimePopupWindow.java:78: 警告: @param 没有说明
     * @param END_YEAR
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/TimePopupWindow.java:87: 警告: @param 没有说明
     * @param date
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/TimePopupWindow.java:106: 警告: @param 没有说明
     * @param parent
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/TimePopupWindow.java:107: 警告: @param 没有说明
     * @param gravity
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/TimePopupWindow.java:108: 警告: @param 没有说明
     * @param x
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/TimePopupWindow.java:109: 警告: @param 没有说明
     * @param y
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/TimePopupWindow.java:110: 警告: @param 没有说明
     * @param date
       ^
/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/src/main/java/com/bigkoo/pickerview/TimePopupWindow.java:131: 警告: @param 没有说明
     * @param cyclic
       ^
:pickerview:javadoc
3 个错误
48 个警告
:pickerview:javadoc FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':pickerview:javadoc'.
> Javadoc generation failed. Generated Javadoc options file (useful for troubleshooting): '/Users/xuhuan/AndroidStudioProjects/Android-PickerView-master/pickerview/build/tmp/javadoc/javadoc.options'

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 7.445 secs
Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/bin/javadoc'' finished with non-zero exit value 1
下午3:41:19: External task execution finished 'javadoc'.

Dialog样式的Activity中使用问题

您好,按照您目前的这种对话框实现方式,在Dialog样式的Activity中展示有问题,可以测试一下,日期选择对话框实在dialog样式activity的底部弹出的,而不是在屏幕底部弹出。
建议最好还是用dialog去实现弹窗

Hello,您好,我发现2个地方有点问题

1.选择城市上面的城市名会是一样的名字,但是选择的时候会不一样
2.点击返回键的时候可以考虑不直接销毁Acitivity,可以给个设置参数,点击返回的时候是否finish掉当前Activity

谢谢!

分钟自定义间隔

您好这款组件是否可以提供一个自定义分钟的滑动间隔数,比如说起点是00 05 10 xx 55
这种分钟每格为5分钟的滚轮

反馈

使用的时候遇到 java.lang.ArrayIndexOutOfBoundsException: length=454; index=-1
at java.util.ArrayList.get(ArrayList.java:310)
at com.bigkoo.pickerview.view.WheelOptions$2.onItemSelected(WheelOptions.java:118)
at com.bigkoo.pickerview.view.WheelOptions$1.onItemSelected(WheelOptions.java:104)
at com.bigkoo.pickerview.lib.OnItemSelectedRunnable.run(OnItemSelectedRunnable.java:12)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5045)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
,还有一点疑问。因为这个控件在使用的时候是要先把所有数据填充进去。总共那么多城市区县。我读取数据的时候都读了十几二十秒才做成需要的格式传进去,这样实在是很慢,能不能动态的跟据选择的省份再去加载它自己的对应的城市和区县数据。数据存在本地读取其实还是挺快的不会影响体验。

通过代码隐藏有bug

 @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            if(pvSex.isShowing()||pvTime.isShowing()){
                pvSex.dismiss();
                return true;
            }
            else if(pvTime.isShowing()){
                pvTime.dismiss();
                return true;
            }
        }
        return super.onKeyDown(keyCode, event);
    }

多点击几次后,怎么样也隐藏不了

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.