Search code examples
androiddialognumberpicker

how to use number picker with dialog


I want to use a number picker for the purpose of getting the discount percentage from the user. once the user enters the sale price, i want a dialog box to appear asking for the discount percentage. I cannot find a way to integrate the numberpicker in the dialog.


Solution

  • I have made a small demo of NumberPicker. This may not be perfect but you can use and modify the same.

    Use a custom dialog and set the number picker.

    More info @

    http://developer.android.com/reference/android/widget/NumberPicker.html

    public class MainActivity extends Activity implements NumberPicker.OnValueChangeListener
    {
        private TextView tv;
        static Dialog d ;
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            tv = (TextView) findViewById(R.id.textView1);
            Button b = (Button) findViewById(R.id.button11);// on click of button display the dialog
             b.setOnClickListener(new OnClickListener()
             {
    
                @Override
                public void onClick(View v) {
                     show();
                }
                });
               }
        @Override
        public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
    
             Log.i("value is",""+newVal);
    
         }
    
        public void show()
        {
    
             final Dialog d = new Dialog(MainActivity.this);
             d.setTitle("NumberPicker");
             d.setContentView(R.layout.dialog);
             Button b1 = (Button) d.findViewById(R.id.button1);
             Button b2 = (Button) d.findViewById(R.id.button2);
             final NumberPicker np = (NumberPicker) d.findViewById(R.id.numberPicker1);
             np.setMaxValue(100); // max value 100
             np.setMinValue(0);   // min value 0
             np.setWrapSelectorWheel(false);
             np.setOnValueChangedListener(this);
             b1.setOnClickListener(new OnClickListener()
             {
              @Override
              public void onClick(View v) {
                  tv.setText(String.valueOf(np.getValue())); //set the value to textview
                  d.dismiss();
               }    
              });
             b2.setOnClickListener(new OnClickListener()
             {
              @Override
              public void onClick(View v) {
                  d.dismiss(); // dismiss the dialog
               }    
              });
           d.show();
    
    
        }
    }
    

    activity_main.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity" >
    
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world" />
    
        <Button
            android:id="@+id/button11"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:text="Open" />
    
    </RelativeLayout>
    

    dialog.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    
        <NumberPicker
            android:id="@+id/numberPicker1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="64dp" />
    
        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/numberPicker1"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="98dp"
            android:layout_toRightOf="@+id/numberPicker1"
            android:text="Cancel" />
    
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/button2"
            android:layout_alignBottom="@+id/button2"
            android:layout_marginRight="16dp"
            android:layout_toLeftOf="@+id/numberPicker1"
            android:text="Set" />
    
    </RelativeLayout>
    

    Snap shot

    enter image description here