Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use NumberPicker widget Android 4.0

I am trying to configure the NumberPicker widget using API 14. There are very little tutorials or instructions online that would help me set it up properly.

so far I have the following code implemented in main.xml:

<NumberPicker
    android:id="@+id/numberPicker1"
    android:layout_width="match_parent"
    android:layout_height="48dp"
    android:orientation="horizontal" />

and in the main activity in the onCreate() method:

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

When running my application in the emulator the numberpicker widget does not get displayed as expected. The button's are not left and right but up and down. And the values overlay each other instead of one number being displayed. Clicking an arrow crashes the application.

EDIT

Made changes as described below in first answer however the numberpciker is not usable, please see screenshot:

Numberpicker screenshot

Any help would be appreciated.

like image 702
Dogtag89 Avatar asked Feb 14 '12 15:02

Dogtag89


People also ask

How do I change the number on my picker style?

Unfortunately, you can't style it. The styles and styling attributes for NumberPicker are not present in the public API, therefore you can't set them and change the default look. You can only select between light and dark theme. As a solution I would suggest to use android-numberpicker library instead.

How do you make a number picker horizontal?

Implementing Horizontal picker in Android using RecyclerView and LinearLayoutManager with kotlin. Its a number picker which has the below functionality. >middle item will be selected, clicking on item will also be selected.


2 Answers

Try commenting out the for loop and the line np.setDisplayedValues(nums);. The NumberPicker should display the values for you automatically.

You might also consider changing the width to android:layout_width="wrap_content" if you want the NumberPicker to display your values horizontally.


EDIT:

It appears that you cannot change NumberPicker (see this link). The issue is that you are trying to change the android:orientation attribute... but this is an inherited attribute from the LinearLayout class. You might be stuck with a vertically displaying NumberPicker unless you customize your own. Sorry!

like image 154
Alex Lockwood Avatar answered Sep 26 '22 07:09

Alex Lockwood


Change the height of the NumberPicker to 200dp. It's simply because it can't display the picker in the height you specified (48dp), because of this it messes up the rendering calculations.

like image 44
Simon Avatar answered Sep 22 '22 07:09

Simon