如何使用 NumberPicker 小部件 Android 4.0

Posted

技术标签:

【中文标题】如何使用 NumberPicker 小部件 Android 4.0【英文标题】:How to use NumberPicker widget Android 4.0 【发布时间】:2012-03-05 23:48:31 【问题描述】:

我正在尝试使用 API 14 配置 NumberPicker 小部件。网上很少有教程或说明可以帮助我正确设置它。

到目前为止,我在 main.xml 中实现了以下代码:

<NumberPicker
    android:id="@+id/numberPicker1"
    android:layout_
    android:layout_
    android:orientation="horizontal" />

在 onCreate() 方法的主要活动中:

NumberPicker np = (NumberPicker) findViewById(R.id.numberPicker1);
    String[] nums = new String[20];
    for(int i=0; i<nums.length; i++)
           nums[i] = Integer.toString(i);

    np.setMinValue(1);
    np.setMaxValue(20);
    np.setWrapSelectorWheel(false);
    np.setDisplayedValues(nums);
    np.setValue(1);

在模拟器中运行我的应用程序时,numberpicker 小部件没有按预期显示。按钮不是左右,而是上下。并且这些值相互重叠,而不是显示一个数字。单击箭头会使应用程序崩溃。

编辑

在第一个答案中进行了如下所述的更改,但是 numberpciker 不可用,请看截图:

任何帮助将不胜感激。

【问题讨论】:

看起来MatchPicker 从父类继承了android:orientation XML 属性,所以这可能是问题所在。尝试摆脱那条线,看看它是否有效。我正在尝试找到一种在线水平显示值的方法... Android 4.0.x 上还有什么方法可以获取背景滚轮图像吗?它在以后的版本中就像一个魅力。 【参考方案1】:

尝试注释掉 for 循环和行 np.setDisplayedValues(nums);NumberPicker 应该会自动为您显示值。

如果您希望NumberPicker 水平显示您的值,您也可以考虑将宽度更改为android:layout_width="wrap_content"


编辑:

您似乎无法更改NumberPicker(请参阅此link)。问题是您正在尝试更改 android:orientation 属性...但这是从 LinearLayout 类继承的属性。除非您自定义自己的,否则您可能会被垂直显示的NumberPicker 卡住。对不起!

【讨论】:

您好,感谢您的帮助,我已经按照您的建议进行了更改,但是数字选择器仍然无法使用。【参考方案2】:

将 NumberPicker 的高度更改为 200dp。这只是因为它无法在您指定的高度(48dp)显示选择器,因此它会弄乱渲染计算。

【讨论】:

以上是关于如何使用 NumberPicker 小部件 Android 4.0的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Jetpack Compose 中使用小部件?

没有闪烁光标的Android NumberPicker

如何创建数字选择器对话框?

在使用 TimePicker 或 NumberPicker 查看对话框首选项时旋转 Android 设备会导致应用程序崩溃

如何更改android中的数字选择器样式?

Flutter,如何获取小部件的大小?