如何使用Android 4.0的NumberPicker小部件

时间:2012-02-14 15:43:48

标签: java android android-widget android-4.0-ice-cream-sandwich

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

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

<NumberPicker
    android:id="@+id/numberPicker1"
    android:layout_width="match_parent"
    android:layout_height="48dp"
    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不可用,请参见屏幕截图:

Numberpicker screenshot

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:6)

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

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


编辑:

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

答案 1 :(得分:2)

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