Android NumberPicker使用大全
NumberPicker定义
NumberPicker是Android framework提供的组件,用于类似以下效果的数据选择
基本使用方法
UI xml这么写
<NumberPickerandroid:id="@+id/number_picker"android:layout_width="300px"android:layout_height="300px"app:layout_constraintTop_toTopOf="parent"app:layout_constraintLeft_toLeftOf="parent"/>
对应java代码这么写
NumberPicker numberPicker = findViewById(R.id.number_picker);numberPicker.setMinValue(10);numberPicker.setMaxValue(40);numberPicker.setValue(30);numberPicker.setOnValueChangedListener((picker, oldVal, newVal) -> {// 只要数值移动就会走这个回调,即便手指不抬起,连续滑动会连续触发Log.d(TAG, "onCreate: " + "oldVal: " + oldVal + ", newVal: " + newVal);});
改变字样大小/颜色
动态改变
numberPicker.setTextSize(50);numberPicker.setTextColor(getResources().getColor(android.R.color.holo_red_dark, getTheme()));
xml属性设置的方式暂无
高亮显示被选中值
NumberPicker
默认就带有高亮显示被选中值的功能,通常通过中间位置和视觉区分(分割线、文字样式)来实现。- 如果你只是想实现图片中的基本效果,直接使用
NumberPicker
并设置好值就可以了,它会自动高亮。 - 如果你需要高度定制高亮效果(改变颜色、样式等),
NumberPicker
的公共 API 不支持,使用反射虽然可以实现但不推荐,因为它不稳定。 - 对于复杂的定制需求,优先考虑使用成熟的第三方库,或者在必要时考虑自己实现自定义视图。
自定义控件
WheelView
https://github.com/wangjiegulu/WheelView
https://github.com/JustinRoom/WheelViewDemo
三方库
MaterialNumberPicker
推荐一款Android开发利器:MaterialNumberPicker库-CSDN博客
MaterialNumberPicker 使用教程-CSDN博客