美文网首页
关于 Android NumberPicker 的两个问题

关于 Android NumberPicker 的两个问题

作者: teletian | 来源:发表于2017-07-16 13:33 被阅读193次

    使用 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 吧。

    相关文章

      网友评论

          本文标题:关于 Android NumberPicker 的两个问题

          本文链接:https://www.haomeiwen.com/subject/lomtkxtx.html