2013年6月12日 星期三

[Android] NumberPicker

 NumberPicker如左圖所示,
 先設定一個範圍,
 然後讓使用者來挑選一個數值。
 
 








這個實作方法很簡單,先設定最大最小的範圍,還有一開始的預設值
        numPicker.setMaxValue(50);  
        numPicker.setMinValue(0);    
        numPicker.setValue(10);
接著利用setOnValueChangedListener來監看使用者選擇的值
int oldValue表示調整前的值
int newValue表示調整後的值
numPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener (){
             public void onValueChange(NumberPicker view, int oldValue, int newValue) {
               
                 tv.setText("pick number is " + String.valueOf(newValue));
               
             }
        });

完整source code如下
MainActivity.java
import android.os.Bundle;
import android.app.Activity;
import android.widget.NumberPicker;
import android.widget.TextView;

public class MainActivity extends Activity {

    public NumberPicker numPicker;
    public TextView tv;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv=(TextView)findViewById(R.id.textView1);
       
        numPicker=(NumberPicker) findViewById(R.id.numberPicker1);
        numPicker.setMaxValue(50);  
        numPicker.setMinValue(0);    
        numPicker.setValue(10); 

        //取得使用者選擇的值
        numPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener (){
             public void onValueChange(NumberPicker view, int oldValue, int newValue) {
                 
                 tv.setText("pick number is " + String.valueOf(newValue));
               
             }
        });
       
    }

}

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:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="35dp"
        android:text="pick number is 10"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <NumberPicker
        android:id="@+id/numberPicker1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="16dp" />

</RelativeLayout>
結果
android 4.1跑出來NumberPicker是長這樣

1 則留言:

  1. 你好,我有用alertdialog,但是裡面的NumberPicker 卻不會出現設定好的最大值與最小值

    回覆刪除