這次要來教的是DatePicker(日期選擇器),這個功能較常在創帳號選擇出生日期時被用到,算是一個實用的小功能,接著就開始進入正題。
先簡單設計出一個頁面,寫出一個Button作為觸發DatePicker的元件,並寫出一個TextView顯示被選取的日期就好。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="日期:"/>
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="選擇日期"/>
</RelativeLayout>
設計好XML之後,就能開始製作選取日期的功能了。
先做好按鈕的監聽器,接著在觸發功能輸入觸發選取日期的事件,下面先解析一些程式碼的片段。DatePickerDialog.OnDateSetListener datePicker;
日曆的監聽器,用於獲取被選擇的日期Calendar calendar = Calendar.getInstance();
日期的格式DatePickerDialog
用於打開日期選擇器
public class MainActivity extends AppCompatActivity {
TextView text;
Button button;
DatePickerDialog.OnDateSetListener datePicker;
Calendar calendar = Calendar.getInstance();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main );
button = findViewById(R.id.button);
text = findViewById(R.id.text);
datePicker = new DatePickerDialog.OnDateSetListener(){
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth){
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, monthOfYear);
calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
String myFormat = "yyyy/MM/dd";
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.TAIWAN);
text.setText("日期:" + sdf.format(calendar.getTime()));
}
};
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DatePickerDialog dialog = new DatePickerDialog(MainActivity.this,
datePicker,
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));
dialog.show();
}
});
}
}