Как использовать виджет NumberPicker Android 4.0

Я пытаюсь настроить виджет NumberPicker с помощью API 14. В Интернете очень мало учебных пособий или инструкций, которые помогли бы мне правильно настроить его.

пока у меня есть следующий код, реализованный в 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);

При запуске моего приложения в эмуляторе виджет выбора номера не отображается должным образом. Кнопки не влево-вправо, а вверх-вниз. И значения накладываются друг на друга вместо отображения одного числа. Щелчок по стрелке приводит к сбою приложения.

ИЗМЕНИТЬ

Внесены изменения, как описано ниже в первом ответе, однако числовой код нельзя использовать, см. снимок экрана:

Скриншот средства выбора

Любая помощь будет оценена по достоинству.


person Dogtag89    schedule 14.02.2012    source источник
comment
похоже, что MatchPicker наследует XML-атрибут android:orientation от родительского класса, так что это может быть проблемой. попробуйте также избавиться от этой строки и посмотрите, сработает ли она. я пытаюсь найти способ отображать значения по горизонтали онлайн...   -  person Alex Lockwood    schedule 15.02.2012
comment
Есть ли способ получить фоновое изображение колеса на Android 4.0.x? Это работает как шарм на более поздних версиях.   -  person Cagdas Altinkaya    schedule 30.01.2013


Ответы (2)


Попробуйте закомментировать цикл for и строку np.setDisplayedValues(nums);. NumberPicker должен отображать значения автоматически.

Вы также можете изменить ширину на android:layout_width="wrap_content", если хотите, чтобы NumberPicker отображало ваши значения по горизонтали.


РЕДАКТИРОВАТЬ:

Похоже, вы не можете изменить NumberPicker (см. эту ссылку). Проблема в том, что вы пытаетесь изменить атрибут android:orientation... но это унаследованный атрибут от класса LinearLayout. Вы можете застрять с вертикально отображаемым NumberPicker, если не настроите свой собственный. Извиняюсь!

person Alex Lockwood    schedule 14.02.2012
comment
Привет, спасибо за вашу помощь, я внес изменения, которые вы мне посоветовали, однако средство выбора номеров по-прежнему невозможно использовать. - person Dogtag89; 15.02.2012

Измените высоту NumberPicker на 200 dp. Это просто потому, что он не может отображать средство выбора на указанной вами высоте (48dp), из-за этого он портит расчеты рендеринга.

person Simon    schedule 09.05.2012