关于 Android NumberPicker 的两个问题

来源:互联网 发布:mac上好用的翻墙软件 编辑:程序博客网 时间:2024/05/21 03:56

使用 NumberPicker 的过程中发现两个问题
1. NumberPicker 的 setFormatter 对第一个显示的 Item 没有效果。
2. 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 吧。