NumberPicker使用,实现滑动选择(可实现省市联动)

最近使用了一个控件NumberPicker,该控件可以实现省市区联动以及其他各种滑动选择,这里只是简单的记录下如何使用。

效果图:

先是xml文件:

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/activity_main"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context="com.example.why.numberpickertest.MainActivity">

android:layout_gravity="center"

android:id="@+id/number_picker"

android:layout_width="match_parent"

android:layout_height="wrap_content">

接下来是Activity的代码:

public class MainActivity extends AppCompatActivity implements NumberPicker.Formatter{

private NumberPicker mNumberPicker;

private String[] mCities = {"北京","上海","广州","深圳","杭州","青岛","西安"};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setTheme(R.style.AppTheme);

setContentView(R.layout.activity_main);

mNumberPicker = (NumberPicker)findViewById(R.id.number_picker);

mNumberPicker.setDisplayedValues(mCities);//设置需要显示的数组

mNumberPicker.setMinValue(0);

mNumberPicker.setMaxValue(mCities.length - 1);//这两行不能缺少,不然只能显示第一个,关联到format方法

setPickerDividerColor();

setNumberPickerTextColor(mNumberPicker,Color.RED);

}

//这个方法是根据index 格式化先生的文字,需要先 implements NumberPicker.Formatter

@Override

public String format(int value) {

return mCities[value];

}

/**

* 通过反射改变分割线颜色,

*/

private void setPickerDividerColor() {

Field[] pickerFields = NumberPicker.class.getDeclaredFields();

for (Field pf : pickerFields) {

if (pf.getName().equals("mSelectionDivider")) {

pf.setAccessible(true);

try{

pf.set(mNumberPicker,new ColorDrawable(Color.BLUE));

}catch (IllegalAccessException e) {

e.printStackTrace();

}catch (Resources.NotFoundException e) {

e.printStackTrace();

}catch (IllegalArgumentException e) {

e.printStackTrace();

}

}

}

}

/**

* 过反射改变文字的颜色

* @param numberPicker

* @param color

* @return

*/

public static boolean setNumberPickerTextColor(NumberPicker numberPicker, int color)

{

final int count = numberPicker.getChildCount();

for(int i = 0; i < count; i++){

View child = numberPicker.getChildAt(i);

if(child instanceof EditText){

try{

Field selectorWheelPaintField = numberPicker.getClass()

.getDeclaredField("mSelectorWheelPaint");

selectorWheelPaintField.setAccessible(true);

((Paint)selectorWheelPaintField.get(numberPicker)).setColor(color);

((EditText)child).setTextColor(color);

numberPicker.invalidate();

return true;

}

catch(NoSuchFieldException e){

Log.w("setTextColor", e);

}

catch(IllegalAccessException e){

Log.w("setTextColor", e);

}

catch(IllegalArgumentException e){

Log.w("setTextColor", e);

}

}

}

return false;

}

}

以上就是NumberPicker的简单使用了,可以用它实现省市区联动(3个NumberPicker),也可以实现充值打折金额滑动选择(比如充100(实付:90))等等.通过反射改变分割线的方法是在stackoverflow上看到的:

改变分割线颜色:http://stackoverflow.com/ques...

改变文字颜色:http://stackoverflow.com/ques...

android numberpicker,NumberPicker实现滑动选择相关推荐

  1. android自定义标尺,Android自定义标尺滑动选择值效果

    Android自定义标尺滑动选择值效果 发布时间:2020-10-16 07:40:15 来源:脚本之家 阅读:130 作者:676598624 本文实例为大家分享了Android实现滑动标尺选择值, ...

  2. android 自定义裁剪 陌陌,Android之View篇6————仿陌陌卡片左右滑动选择布局

    Android之View篇6----仿陌陌卡片左右滑动选择控件 一.目录 Android之View篇6----仿陌陌卡片左右滑动选择控件 一.目录 二.效果图 三.业务需求梳理 四.思路分析 1. 新 ...

  3. android仿探探卡片右滑缩小,仿探探卡片滑动选择

    探探的滑动选择妹子的功能,算是一个很经典的交互方式.自从出来以后可以说是备受关注,渐渐地很多类似功能的app也都有尝试.实现也是具有综合性的挑战,所以说网上也是有不少例子的,在这里我通过自定义View ...

  4. android 带刻度的滑动条_Android实现滑动刻度尺效果

    最近群里的开发人员咨询怎样实现刻度尺的滑动效果去选择身高体重等信息.给个横着的效果,自己试着去改编或者修改一下,看看通过自己的能力能不能做出竖着的效果来,过两天我再把竖着的那个滑动选择效果分享出来.废 ...

  5. android切换页面上滑动动画,Android ViewPager多页面滑动切换以及动画效果

    评论 #28楼[楼主] 2012-06-01 14:27D.Winter @孤寒江雪 我猜 要么在头尾各再加入一个页卡 在页卡切换监听中判断,如果选中了头尾的页卡,就返回到相邻的那个页卡.头尾页卡的界 ...

  6. android 九宫格解锁源码,Android 自己动手实现滑动九宫格解锁

    Android 自己动手实现滑动九宫格解锁 文章主要以实现思路为主.来带领大家逐步实现该效果功能.如有问题,请多多提出 效果预览 整体思路分析 九宫格滑动解锁,为当下比较热门的手机,Pad等触屏设备很 ...

  7. Appium滑动选择日期

    Appium封装对日期控件的操作 在app中针对日期控件的常见处理方式 如果是第三方库,并且有公开的api接口,就可以直接使用python或者android的uiautomator这个工具直接去调用, ...

  8. Android中文输入的新选择——搜狗拼音输入法

    如果不是我的Google拼音输入法出了点问题,我大概不会去尝试搜狗的Android平台拼音输入法.虽然全键盘在竖屏的情况下非常难用,不过横屏的时候还是可以接受的,何况G1有物理键盘. 现在的问题是,我 ...

  9. Android Spinner值不显示,选择列表正常

    Android Spinner值不显示,选择列表正常 本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦: 1.项目开发过程中,只有小米的手机出现这个问 ...

最新文章

  1. Asp.Net 使用 GDI+ 绘制3D饼图入门篇源码
  2. 红包规则_“科普闯关100%夺红包”游戏规则升级了!速速来看!
  3. 单点登录 - 修改CAS服务器的一些配置( 陆续添加)
  4. Python中的网络编程之UDP
  5. linux nohup命令
  6. 前端学习(1430):ajax封装五
  7. 【机器学习】高斯过程python包安装过程
  8. Android 渗透测试学习手册 第八章 ARM 利用
  9. leetcode题解50-Pow(x,n)
  10. 控制edittext光标位置
  11. Security+ 学习笔记16 密钥管理
  12. reactNative之react-native-picker
  13. 对话DDM:分布式数据库中间件全解析
  14. 面试题之序列化与反序列化
  15. petalinux 安装
  16. 衡水二中2021清华北大高考成绩查询,衡水二中成为“清华大学2020年优质生源中学”...
  17. 《TCPIP网络编程(尹圣雨)》PDF+源代码+目录;文章最底下有链接
  18. python在线电影网站-四
  19. Vue报错:component has been registered but not used
  20. 地平线4卡在转圈界面_上海4日旅行攻略|吃住行玩 都是干货建议收藏

热门文章

  1. python设计模式9-装饰器模式
  2. springcloud注册demo(使⽤第⼀代Spring Cloud核⼼组件完成项⽬构建、编码及测试)
  3. 使用networkx求解网络的平均度
  4. mongodb聚合操作之group
  5. 微信小程序开发之路(三)
  6. AndroidStudio安装教程(Windows环境下)
  7. SQL Server FOR XML PATH 语句的应用---列转行
  8. AjaxFileUpload.js
  9. 进入 App Store 打分
  10. Redis 备份,容灾及高可用实战