Есть ли представление для ввода целых чисел в Android?
Я ищу что-то вроде отдельных частей диалога выбора даты. Представление, которое позволяет вводить целые числа (и только целые числа), которые вы можете ограничить (например, от 1 до 10), где вы можете использовать клавиатуру или стрелки в самом представлении. Он существует?
Это для диалога. Также поможет готовый диалог для запроса целого числа.
Ответы
Ответ 1
Виджет NumberPicker
- это, вероятно, то, что вы хотите. К сожалению, он находится в com.android.internal.Widget.NumberPicker
, с которым мы не можем добраться обычными средствами.
Существует два способа его использования:
- Скопировать код из источника android
- Использовать отражение для доступа к виджету
Здесь xml для использования в макете:
<com.android.internal.widget.NumberPicker
android:id="@+id/picker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
Здесь отражение для установки параметров NumberPicker (я не тестировал это):
Object o = findViewById(R.id.picker);
Class c = o.getClass();
try
{
Method m = c.getMethod("setRange", int.class, int.class);
m.invoke(o, 0, 9);
}
catch (Exception e)
{
Log.e("", e.getMessage());
}
Поскольку это внутренний виджет, а не в SDK, будущая совместимость может быть нарушена, если вы используете отражение. Было бы безопаснее катиться из источника.
Исходный источник этой информации является общим в Google Group.
Ответ 2
Внутренний виджет NumberPicker был извлечен из исходного кода Android и упакован для вашего использования, и вы можете найти его здесь. Отлично работает!
РЕДАКТИРОВАТЬ. Исходная ссылка недоступна, вы можете найти копию виджета здесь
Ответ 3
Как уже упоминалось в в другом месте, NumberPicker теперь доступен в Android SDK с API 11 (Android 3.0):
http://developer.android.com/reference/android/widget/NumberPicker.html
Для Android < 3.0, вы можете использовать код здесь:
https://github.com/novak/numpicker-demo
https://github.com/mrn/numberpicker
Ответ 4
Вы можете использовать EditText android:inputType="number"
<EditText android:layout_height="wrap_content" android:id="@+id/editText1" android:inputType="number" android:layout_width="wrap_content"></EditText>