如何减少 NumberPicker 中的填充

How to decrease padding in NumberPicker

如何减少 NumberPicker 中的填充

我想要类似的东西:

很遗憾,号码选择器不是 style-able。

我建议使用 one by SimonTV

这样的库

尝试自定义您的 NumberPicker 主题,如下所示:

    <style name="Widget.Holo.NumberPicker" parent="Widget.NumberPicker">
  <!-- Customize your theme here -->
  <item name="android:selectionDivider">@android:drawable/numberpicker_selection_divider</item>
  <item name="android:selectionDividerHeight">2dp</item>
  <item name="android:selectionDividersDistance">25dp</item>
  <item name="android:internalMinWidth">50dp</item>
  <item name="android:internalMaxHeight">100dp</item>

</style>

希望对您有所帮助。

归档非常容易:


scaleXscaleY 等于 2.5)


(没有 scaleXscaleY

    String[] values = {"Public", "Shared", "Private",....};

    NumberPicker np=
            (NumberPicker) findViewById(R.id.numberPicker);
    np.setMaxValue(values.length-1);
    np.setMinValue(0);
    np.setDisplayedValues(values);

并简单地设置小 layout_heightscaleX, scaleX:

<NumberPicker
    android:id="@+id/numberPicker"
    android:layout_width="wrap_content"
    android:layout_height="50dp"
    android:scaleX="2.5"
    android:scaleY="2.5"/>

我同意,但是标准 NumberPicker 很难定制。

希望对你有所帮助

正如 Grebulon 指出的那样,如果您使用 的库,自定义选择器非常简单。

这些是代码和结果-

<net.simonvt.numberpicker.NumberPicker
        android:id="@+id/numberPicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:internalMaxHeight="100dp"
        app:selectionDividersDistance="30dp"/>

我被分叉过一次以增加选择轮的数量。 这是上面代码的输出。

这可能有点晚了,但您可以在 NumberPicker 上设置明确的高度,然后它会遵循给定的高度并调整项目之间的 space。

一个简单的解决方案是降低 NumberPicker 的高度,这也会导致数字之间的内部间距减小,在我的例子中,我将其设置为 120dp,这就可以完成工作

android:layout_height="120dp"

这是我的 NumberPicker 的完整代码

<NumberPicker
    android:id="@+id/numberPicker"
    android:layout_width="wrap_content"
    android:layout_height="120dp"
    android:layout_marginEnd="16dp"
    android:theme="@style/myNumberPicker" />

对于样式,我在我的样式文件中使用了以下主题

<!-- Custom style for Number Picker -->
<style name="myNumberPicker" parent="Theme.MyApplication">
    <item name="android:textSize">26sp</item>
    <item name="android:textColorPrimary">@color/textColorBlue</item>
    <item name="colorControlNormal">@android:color/transparent</item>
    <item name="android:fontFamily">@font/montserrat_semi_bold</item>
</style>