Android 日期控制元件(DatePickerDialog)與時間控制元件(TimePickerDialog)的使用
阿新 • • 發佈:2019-02-15
在Android中提供日期和時間的控制元件是DataPicker與TimePicker,不過這兩個控制元件並非彈窗模式,而是直接在頁面上佔據一塊區域,並不會自動關閉,因此不適合直接使用,實際開發中用的是已經封裝好的對話方塊DatePickerDialog與TimePickerDialog
執行效果如下圖
DatePickerDialog
DatePickerDialog相當於在AlertDialog上載入了DatePicker,用起來更簡單,只需呼叫建構函式設定一下當前年、月、日,然後呼叫show方法即可彈出日期對話方塊,日期選擇時間有監聽器OnDateSetListener負責相應,在該監聽實現的OnDateSet方法中,開發者能夠獲得使用者選擇的具體日期,這裡需要注意的是OnDateSet方法的月份引數,該引數的起始值不是1而是0,也就是說,一月份對應的是引數0,十二月份對應的是引數11,如果實在不理解,記住這裡的月份值要加1就行了
TimePickerDialog
該對話方塊的用法類似DatePickerDialog,不同之處主要有兩個
(1) 建構函式傳的是當前的小時與分鐘,最後一個引數表示是否採用二十四小時進位制,true表示小時的數值範圍為0~23
(2) 時間選擇監聽器是OnTimeSetListener,對應需要實現的方法是onTimeSet,在該方法中可獲得使用者選好的小時和分鐘
下面是兩個控制元件的使用方法
XML程式碼
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:gravity="center" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="sxpi.com.myapplication.MainActivity"> <TextView android:id="@+id/dateText" android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="Date" android:textSize="22sp" /> <TextView android:id="@+id/timeText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Time" android:textSize="22sp" /> </LinearLayout>
程式程式碼
import android.app.DatePickerDialog; import android.app.TimePickerDialog; import android.icu.util.Calendar; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.DatePicker; import android.widget.TextView; import android.widget.TimePicker; public class MainActivity extends AppCompatActivity implements View.OnClickListener, DatePickerDialog.OnDateSetListener, TimePickerDialog.OnTimeSetListener{ TextView dateText,timeText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); dateText=(TextView)findViewById(R.id.dateText); timeText=(TextView)findViewById(R.id.timeText); dateText.setOnClickListener(this); timeText.setOnClickListener(this); } @Override public void onClick(View v) { if (v.getId()==R.id.dateText){ Calendar calendar=Calendar.getInstance(); DatePickerDialog dialog = new DatePickerDialog(this,this, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); dialog.show(); } if (v.getId()==R.id.timeText){ Calendar calendar=Calendar.getInstance(); TimePickerDialog dialog=new TimePickerDialog(this,this, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), true); dialog.show(); } } @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { String desc=String.format("您選擇的時間是%d時%d分",hourOfDay,minute); timeText.setText(desc); } @Override public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { String desc=String.format("您選擇的日期是%d年%d月%d日",year,month+1,dayOfMonth); dateText.setText(desc); } }