Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a view for inputing integers in Android?

Tags:

I'm looking for something like the individual parts of the date picker dialog. A view that allows you to input integers (and only integers) that you can limit (between 1 and 10 for example), where you can use the keyboard or the arrows in the view itself. Does it exists?

It is for a dialog. A ready-made dialog to request an integer would also help.

like image 788
pupeno Avatar asked Feb 07 '09 09:02

pupeno


2 Answers

The NumberPicker widget is probably what you want. Unfortunately it's located in com.android.internal.Widget.NumberPicker which we cannot get to through normal means.

There are two ways to use it:

  1. Copy the code from android source
  2. Use reflection to access the widget

Here's the xml for using it in a layout:

<com.android.internal.widget.NumberPicker     android:id="@+id/picker"     android:layout_width="wrap_content"     android:layout_height="wrap_content"/> 

Here's the reflection to set the NumberPicker settings (I have not tested this):

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()); } 

Since it's an internal widget and not in the SDK, future compatibility could be broken if you use reflection. It would be safest to roll your own from the source.

The original source for this information is shared in this Google Group.

like image 106
Will Avatar answered Oct 15 '22 22:10

Will


The NumberPicker internal widget has been pulled from the Android source code and packaged for your use and you can find it here. Works great!

EDIT: Original link is down, you can find a copy of the widget here

like image 26
Bryan Denny Avatar answered Oct 15 '22 22:10

Bryan Denny