Освой программирование играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

NumberPicker

Компонент NumberPicker из раздела Advanced позволяет выбрать нужное число из заданного диапазона. Принцип работы похож на револьверный барабан - можно прокручивать числа в одну или другую сторону. Когда будет достигнут заданный предел, то числа продолжат изменяться в заданном диапазоне.

Данный компонент мне показался каким-то сырым. В проектах под Android 4 на эмуляторе выглядит ужасно. Желания использовать его в своих проектах у меня не появилось.

Разместим компонент на экране.


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <NumberPicker
        android:id="@+id/numberPicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:orientation="vertical"
        android:width="100dp" />

</LinearLayout>

Несмотря на то, что есть атрибут orientation, толку от него немного. Работает только вертикальный режим.

Добавляем немного кода:


NumberPicker numberPicker = (NumberPicker) findViewById(R.id.numberPicker);
numberPicker.setMaxValue(9);
numberPicker.setMinValue(0);

Мы определили максимальное и минимальные числа для нашего вида. Удивительно, но через XML нельзя установить эти значения. Запустив проект, вы можете теперь выбрать нужное число через стрелочки. Недавно проверял на другом телефоне (API 19) - стрелочек уже не было. Допускаю, что в более свежих версиях компонент снова изменил свой внешний вид.

NumberPicker

Метод setWrapSelectorWheel() с параметром false может отключить бесконечную прокрутку:


numberPicker.setWrapSelectorWheel(false);

Про остальные методы почитайте в документации.

Реклама