图片.png

图片.png

图片.png

这是一款仿iOS的PickerView控件,有时间选择和选项选择,并支持一二三级联动,支持自定义样式,3.x新版本的详细特性如下:

有时间和选项这两种选择器

选项选择器支持三级联动

时间选择器支持起始和终止日期设定

支持“年,月,日,时,分,秒”,“省,市,区”等选项的单位(label)显示、隐藏和自定义。

支持自定义文字、颜色、文字大小等属性

支持背景颜色更换,有夜间模式需求的问题可以解决了

Item的文字长度过长时,文字会自适应缩放到Item的长度,避免显示不完全的问题

——TimePickerView 时间选择器,支持年月日时分,年月日,年月,时分等格式

——OptionsPickerView 选项选择器,支持一,二,三级选项选择,并且可以设置是否联动

1.添加Jcenter仓库 Gradle依赖:

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

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();

//条件选择器

OptionsPickerView pvOptions = new OptionsPickerView.Builder(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);

}

}).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);

pvTime = new TimePickerView.Builder(this, new TimePickerView.OnTimeSelectListener() {

@Override

public void onTimeSelect(Date date,View v) {//选中事件回调

tvTime.setText(getTime(date));

}

})

.setType(TimePickerView.Type.ALL)//默认全部显示

.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 OptionsPickerView.Builder(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);

}

})

.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)//是否显示为对话框样式

.build();

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

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

// 注意:自定义布局中,id为 optionspicker 或者 timepicker 的布局以及其子控件必须要有,否则会报空指针

// 具体可参考demo 里面的两个自定义布局

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(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);//添加数据

android图片收藏,收藏 Android-PickerView相关推荐

  1. android 图片查看动画,Android 共享动画实现点击列表图片跳转查看大图页面

    主要内容使用系统提供的 API 实现共享动画 在实现过程中遇到的问题图片点击和关闭之后会出现短暂的黑屏问题实现的动画效果如下: 共享动画.gif 具体实现这个效果是在两个页面之间的切换动画,既然是两个 ...

  2. android图片保存形式,Android应用开发之Android ScrollView截图和图片保存到相册的方式...

    本文将带你了解Android应用开发之Android ScrollView截图和图片保存到相册的方式,希望本文对大家学Android有所帮助. 1.1首先来看你一种截取屏幕,这种代码有缺陷,只能截取一 ...

  3. Android图片上倒计时,Android自定义照相机倒计时拍照

    自定义拍照会用到SurfaceView控件显示照片的预览区域,以下是布局文件: 两个TextView是用来显示提示信息和倒计时的秒数的 xmlns:tools="http://schemas ...

  4. android 图片切割代码,Android用clip剪切图像资源

    使用clip剪切图像资源可以做进度条,图像慢慢展开的效果,他使用以下几个属性来控制效果: android:drawable:指定要剪切的原图像. android:clipOrientation:截取的 ...

  5. android 图片按钮变形,android wrap_content引起的图片变形

    在intellij中的preview如下图(可以看到,没有锯齿): XML文件中的代码如下: android:layout_width="wrap_content" android ...

  6. android 图片文字布局,Android自定义控件图片+文字布局

    本来想用Tabrow来布局一组上面是图片下面是文字说明的控件,可是发现Tabrow不像想象的那样简易,并且这几组之间的控件距离很差把握,在网上找了两种方法以供参照.html 方法1.利用RadioBu ...

  7. android 图片任意拖拉,android 拖拉图片 Gallery 用SimpleAdater实现

    除了使用BaseAdapter之外,SimpleAdapter也是一种最为常见的适配器操作类. 既然要使用SimpleAdapter类,那么就需要准备一个List集合,而在这个List集合之中, 一定 ...

  8. android图片播放器,android案例之图片播放器

    很简单的图片播放器,废话不多说了<?xml version="1.0" encoding="utf-8"?> xmlns:android=" ...

  9. android 图片手动放大,Android图片的手动放大缩小

    利用缩放因子进行图片的放大缩小,效果图如下 在实现过程中如出现直接崩溃的情况:在全局配置文件中加入android:largeHeap="true"即可解决问题,在文章最后有现成代码 ...

  10. android 图片绑定按钮,android的图片按钮(ImageButton)的案例

    运行效果,这里设置了两个图片按钮,开始游戏按钮和注销按钮 在xml添加如下代码 xmlns:app="http://schemas.android.com/apk/res-auto" ...

最新文章

  1. 北斗卫星现在什么情况?这些数据不能不看
  2. LDAP落地实战(三):GitLab集成OpenLDAP认证
  3. 【视图】ABAP Views
  4. Java必备主流技术流程图
  5. Vivado工程文件分类
  6. 先知模型 facebook_Facebook先知
  7. audio unity 加速_浅谈Unity中Android、iOS音频延迟
  8. Linux工作笔记037---Centos8.2下安装mysql_测试通过_注意这里安装8.0.22版本的_8.0以后的版本有需要注意的地方_跟7.0之前的版本不一样
  9. Java 对文件的操作
  10. 每天执行一次批处理_关于静态批处理/动态批处理/GPU Instancing /SRP Batcher的详细剖析...
  11. php实现求对称二叉树(先写思路,谋而后动)
  12. docker 搭建redis可视化工具treenms
  13. 基于AVR单片机及无线收发模块的脉搏监测系统设计
  14. 有关BT5破解wifi密码的流程及当中经历问题的总结——从寻找ISO镜像到破解wifi密码
  15. 数字化转型建设的基本模型与能力构建
  16. 恒凯USB数据采集卡在国产麒麟操作系统下的应用(二)Python环境设置及数据采集实验
  17. TypeError: set expected at most 1 arguments, got 4
  18. arduino蓝牙通讯代码_arduino笔记二:arduino与手机蓝牙通讯
  19. BUUCTF RSA题目全解1
  20. Spark认知Spark环境搭建

热门文章

  1. NLP自然语言处理系列-week6-Seq2Seq+Attention
  2. 中国油田化学品市场预测及战略研究报告(2022版)
  3. 数组转list,list转数组
  4. 笔记本电脑接口全接触
  5. 如何创建Maven项目?
  6. Android RatingBar控件
  7. 使用ExecutorService,解决多任务同时进行,并等待全部任务完成合并数据
  8. 致Android开发者的Kotlin入门
  9. springboot整合curator实现分布式锁模拟抢购场景
  10. 用Python画小猪佩奇【转】