Android NumberPicker使用

Android NumberPicker使用

NumberPicker是一个滑动的控件,和spinner差不多。

数字选择器NumberPicker是Android3.0之后出的一个控件,所以如果要兼容3.0之前的版本就需要用到GitHub上的开源项目,下载地址是https://github.com/SimonVT/android-numberpicker

使用

1.首先在xml文件中引入NumberPicker控件

<NumberPicker
    android:id="@+id/np"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
   app:layout_constraintTop_toBottomOf="@+id/number_picker_use" />

2.在activity中找到NumberPicker,设置方法

NumberPicker numberPicker = findViewById(R.id.np);
String[] datas = new String[]{"北京", "上海", "广州", "深圳"};
numberPicker.setDisplayedValues(datas); //设置文字
numberPicker.setMaxValue(datas.length - 1); //设置最大值,最大值是datas[3]
numberPicker.setMinValue(0);
numberPicker.setDescendantFocusability(DatePicker.FOCUS_BEFORE_DESCENDANTS);
numberPicker.setValue(1);

常用方法

设置最大值
mNumberPicker.setMaxValue(10); //设置最大值,只能传入int
设置最小值
 mNumberPicker.setMinValue(0); //设置最小值
设置当前值
mNumberPicker.setValue(5); //设置当前值
获取当前值
int value = mNumberPicker.getValue(); //获取当前值
getMaxValue()获取最大值
getMinValue()获取最小值

有一点需要注意的数值不能用负数。

获取设置的数据
String[] data = numberPicker.getDisplayedValues();//返回一组数据
获取/设置文本颜色、文本大小、固定颜色
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            numberPicker.setTextColor(Color.RED);//设置所有的文本都是红色
            numberPicker.setTextSize(20);//文字大小,这里最好使用px转dp
            numberPicker.setSelectionDividerHeight(40);//两道分割线的高度
        }
        
getTextColor        
getTextSize
getSelectionDividerHeight
设置监听

NumberPicker有三个监听分别是OnValueChangeListener、OnScrollListener、Formatter

OnValueChangeListener值改变监听
mNumberPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
            /**
             * 每当选择的值改变时都会调用一次
             * @param oldVal 改变前的值
             * @param newVal 改变后的值
             */
            @Override
            public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
                //做想做的事
            }
        });

每当选择的值改变都会调用一次这个方法,选择的值改变也就是显示在中间的那个值改变。

OnScrollListener滑动事件

实例代码如下

mNumberPicker.setOnScrollListener(new NumberPicker.OnScrollListener() {
            @Override
            public void onScrollStateChange(NumberPicker view, int scrollState) {
                switch (scrollState){
                    case SCROLL_STATE_FLING:
                        //手离开之后还在滑动
                        break;
                    case SCROLL_STATE_IDLE:
                        //停止滑动
                        break;
                    case SCROLL_STATE_TOUCH_SCROLL:
                        //正在滑动
                        break;
                }
            }
        });

滑动事件就是监听控件滑动时的状态
滑动事件有三个状态

  1. SCROLL_STATE_FLING ——>手离开之后还在滑动
  2. SCROLL_STATE_IDLE ——>停止滑动
  3. SCROLL_STATE_TOUCH_SCROLL ——>正在滑动
Formatter监听设置格式化程序用于格式化当前值

实例代码如下

mNumberPicker.setFormatter(new NumberPicker.Formatter() {
            @Override
            public String format(int value) {
                //做一些格式转换
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值