android DatePicker

public class DatePicker extends FrameLayout

java.lang.Object

android.view.View

          android.view.ViewGroup

                    android.widget.FrameLayout

                        android.widget.DatePicker

DatePicker   一個選擇年月日的日歷佈局視圖

公共方法

public int getDayOfMonth ()

獲取選擇的天數

public int getMonth ()

獲取選擇的月份。(註意:返回數值為0..11,需要自己+1來顯示)

public int getYear ()

獲取選擇的年份

public void init (int year, int monthOfYear, int dayOfMonth, DatePicker.OnDateChangedListener onDateChangedListener)

初始化狀態。(譯者註:初始化年月日)

參數

year 初始年(譯者註:註意使用new Date()初始化年時,需要+1900,如下:date.getYear() + 1900)

monthOfYear 初始月。

dayOfMonth 初始日。

onDateChangedListener 日期改變時通知用戶的事件監聽,可以為空(null)。

public void setEnabled (boolean enabled)

設置視圖的啟用狀態。該啟用狀態隨子類的不同而有不同的解釋。

參數

enabled True if this view is enabled, false otherwise.設置為true表示啟動視圖,反之禁用。

public void updateDate (int year, int monthOfYear, int dayOfMonth)

更新日期

受保護方法

protected void dispatchRestoreInstanceState (SparseArray<Parcelable> container)

重寫使我們能夠完全控制這小部件的保存或恢復。(譯者註:此處直接調用瞭父類的ViewGroup. dispatchThawSelfOnly方法)

參數

container SparseArray 持有保存以前的狀態。The SparseArray which holds previously saved state.

protected void onRestoreInstanceState (Parcelable state)

允許視圖重新應用以前通過onSaveInstanceState()生成代表內部的狀態。這個函數決不調用一個空的狀態。

參數

state 返回以前調用onSaveInstanceState()保存下來的狀態。

protected Parcelable onSaveInstanceState ()

允許視圖生成一個代表內部的狀態,以後可用於創建一個與之相同的新的實例。這種狀態應該隻包含非持久或以後不能夠重建的信息。例如,你決不存儲你當前在屏幕上的位置,因為這會在視圖的層面上重新計算放置一個新的實例。

你可以存儲到這裡的一些例子:一個文本框中當前光標的位置(但通常不是文字本身,文字通常保存在內容提供者(content provider)或其他持久的儲存中),一個列表視圖中的當前選中項。

返回值

返回一個包含視圖當前狀態的Parcelable對象,或沒有什麼狀態保存時返回null。默認實現返回null。

=======================

案例一:

1:定義佈局文件資源datepicker.xml

01
<?xml version="1.0" encoding="utf-8"?>
02
<ScrollView
03
    xmlns:android="http://schemas.android.com/apk/res/android"
04
    android:layout_width="wrap_content"
05
    android:layout_height="fill_parent" >
06
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
07
        android:orientation="vertical"
08
        android:layout_width="fill_parent"
09
        android:layout_height="fill_parent"
10
    > 
11
            <TextView   
12
                android:layout_width="fill_parent"  
13
                android:layout_height="wrap_content"
14
                android:gravity="center_horizontal"  
15
                android:text="選擇時間"
16
            /> 
17
            <DatePicker android:id="@+id/datepicker"
18
                android:layout_width="wrap_content"
19
                android:layout_height="wrap_content"
20
                android:layout_gravity="center_horizontal"
21
            /> 
22
            <TimePicker  
23
               android:id="@+id/timepicker"
24
               android:layout_width="wrap_content"
25
               android:layout_height="wrap_content"
26
               android:layout_gravity="center_horizontal"
27
            /> 
28
            <EditText  
29
               android:id="@+id/et"
30
               android:layout_width="fill_parent"
31
               android:layout_height="wrap_content"
32
               android:editable="false"
33
               android:cursorVisible="false"
34
            /> 
35
</LinearLayout>
36
</ScrollView>
2.定義java文件:DatePickerDemo.java
01
package com.test;
02
 
03
import java.util.Calendar;
04
 
05
import android.app.Activity;
06
import android.os.Bundle;
07
import android.widget.DatePicker;
08
import android.widget.DatePicker.OnDateChangedListener;
09
import android.widget.EditText;
10
import android.widget.TimePicker;
11
import android.widget.TimePicker.OnTimeChangedListener;
12
 
13
public class DatePickerDemo extends Activity {
14
    
15
    private int year; 
16
    private int month; 
17
    private int day; 
18
    private int hour; 
19
    private int minute;
20
    private EditText editText;
21
    /** Called when the activity is first created. */
22
    @Override
23
    public void onCreate(Bundle savedInstanceState) { 
24
        super.onCreate(savedInstanceState); 
25
        setContentView(R.layout.datepicker); 
26
        DatePicker datapicker = (DatePicker)findViewById(R.id.datepicker); 
27
        TimePicker timepicker =(TimePicker)findViewById(R.id.timepicker);
28
        editText = (EditText) findViewById(R.id.et); 
29
        Calendar c =Calendar.getInstance(); 
30
        year =c.get(Calendar.YEAR); 
31
        month=c.get(Calendar.MONTH); 
32
        day=c.get(Calendar.DAY_OF_MONTH); 
33
        hour = c.get(Calendar.HOUR); 
34
        minute =c.get(Calendar.MINUTE); 
35
        datapicker.init(year, month, day, new OnDateChangedListener() { 
36
               
37
            @Override
38
            public void onDateChanged(DatePicker view, int year, int monthOfYear, 
39
                    int dayOfMonth) { 
40
                DatePickerDemo.this.year=year; 
41
                DatePickerDemo.this.month=monthOfYear; 
42
                DatePickerDemo.this.day=dayOfMonth; 
43
        showDate(year,month,day,hour,minute); 
44
            } 
45
        }); 
46
        timepicker.setOnTimeChangedListener(new OnTimeChangedListener() { 
47
               
48
            @Override
49
            public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { 
50
                // TODO Auto-generated method stub 
51
                DatePickerDemo.this.hour=hourOfDay; 
52
                DatePickerDemo.this.minute=minute; 
53
            } 
54
        }); 
55
    } 
56
    private void showDate(int year, int month, int day, int hour,int minute) { 
57
      
58
        editText.setText(year+"年"+month+"月"+day+"日"+hour+"時"+minute+"分"); 
59
    } 
60
}
3:執行效果:

 

作者:amigos_pop

 

發佈留言