使用 NumberPicker 的过程中发现两个问题
- NumberPicker 的 setFormatter 对第一个显示的 Item 没有效果。
- NumberPicker 没有提供接口去修改它的 Design。
NumberPicker 的 setFormatter 对第一个显示的 Item 没有效果
numberPicker.setMinValue(0);
numberPicker.setMaxValue(10);
numberPicker.setFormatter(new NumberPicker.Formatter() {
@Override public String format(int value) {
return value + "小时";
}
});
NumberPicker 的 value 值是 int 类型的,如果不想只把数字显示在画面,就必须转换一下。
setFormatter 可以达到转换的效果,但是有个问题,刚打开 NumberPicker 第一个选中的 Item 没有效果。滑动之后会显示正常。
这个是 Google 的一个 Bug,解决办法可以参照 Google 的 Issue。
与其这么折腾,还不如直接用 NumberPicker 的 setDisplayedValues 方法,也能达到效果。
NumberPicker 没有提供接口去修改它的 Design
如果你想修改 Divider 的颜色,修改 Item 之间的距离,等等。其实 NumberPicker 是没有提供接口的。
解决办法是利用 Java 的反射来获取属性并修改它们的值。可以参考 https://gist.github.com/bubblek/f0b557c8fe0908b6e448 。
也有人提供了库 https://github.com/ShawnLin013/NumberPicker 。
既然 Google 没有提供接口来修改 NumberPicker,那么应该是不希望开发者去修改它吧。所以尽量还是用原来的 Design,除非万不得已,不要去修改它的 Design 吧。