Android SDK Tutorials系列 - Hello Views - Date Picker


Date Picker
可以用DatePicker窗口小部件来选择日期,用户可以选择年月日。

本教程里,你将创建一个DatePickerDialog对话框,点击按钮会弹出一个悬浮的日期选择器对话框。当用户设置日期以后,一个TextView会显示刚设置的日期。

创建一个工程:HelloDatePicker.
打开 res/layout/main.xml 并修改如下:

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="wrap_content"  
  4.     android:layout_height="wrap_content"  
  5.     android:orientation="vertical">  
  6.     <TextView android:id="@+id/dateDisplay"  
  7.         android:layout_width="wrap_content"  
  8.         android:layout_height="wrap_content"  
  9.         android:text=""/>  
  10.     <Button android:id="@+id/pickDate"  
  11.         android:layout_width="wrap_content"  
  12.         android:layout_height="wrap_content"  
  13.         android:text="Change the date"/>  
  14. </LinearLayout>  

采用LinearLayout布局,里面用一个TextView来显示日期,和一个Button,点击它会打开DatePickerDialog对话框。

打开HelloDatePicker.java ,添加下列成员变量:

  1. private TextView mDateDisplay;  
  2. private Button mPickDate;  
  3. private int mYear;  
  4. private int mMonth;  
  5. private int mDay;  
  6.   
  7. static final int DATE_DIALOG_ID = 0;  

第一组变量定义了界面里的View(TextView、Button)以及日期的年月日。静态整数DATE_DIALOG_ID 是Dialog的ID,用来创建日期选择器。

修改onCreate() 方法如下:

  1. protected void onCreate(Bundle savedInstanceState) {  
  2.         super.onCreate(savedInstanceState);  
  3.         setContentView(R.layout.main);  
  4.   
  5.         // capture our View elements   
  6.         mDateDisplay = (TextView) findViewById(R.id.dateDisplay);  
  7.         mPickDate = (Button) findViewById(R.id.pickDate);  
  8.   
  9.         // add a click listener to the button   
  10.         mPickDate.setOnClickListener(new View.OnClickListener() {  
  11.             public void onClick(View v) {  
  12.                 showDialog(DATE_DIALOG_ID);  
  13.             }  
  14.         });  
  15.   
  16.         // get the current date   
  17.         final Calendar c = Calendar.getInstance();  
  18.         mYear = c.get(Calendar.YEAR);  
  19.         mMonth = c.get(Calendar.MONTH);  
  20.         mDay = c.get(Calendar.DAY_OF_MONTH);  
  21.   
  22.         // display the current date (this method is below)   
  23.         updateDisplay();  
  24.     }  

首先,加载main.xml布局文件。然后使用findViewById(int)来引用TextView和Button。

然后为Button设置一个 View.OnClickListener点击事件监听器,当Button被点击后,showDialog(int)方法会被调用,该方法创建一个ID为DATE_DIALOG_ID的日期选择器对话框。

showDialog(int)方法让当前Activity管理对话框的生命周期,同时调用onCreateDialog(int) (将在下一步定义)回调函数显示对话框。

在设置点击事件监听器以后,创建一个Calendar对象,读取当前年、月、日。最后,调用updateDisplay() 方法,让TextView显示当前日期。

  • 1
  • 2
  • 下一页

相关内容