سلام دوستان ببینید در بعضی مواقع ما میخایم که یک تاریخ را بنا به دلایلی انتخاب کنیم
خب اینکه چجوری یک تاریخ رو بتونیم انتخاب و ثبت کنیم اندروید یک قابلیتی برای ما
ایجاد کرده به نام Date Picker که بتونیم این کار را انجام بدیم
از Android Date Time Picker به صورت گسترده و زیاد در برنامه نویسی اندروید استفاده میشه
در این آموزش میخام که استفاده از یک Date Picker و یک Timer Picker را در برنامه نویسی بهتون آموزش بدم
که ازاین مؤلفه ها برای انتخاب تاریخ و زمان در یک رابط کاربری سفارشی استفاده می شود
برای دستیابی به این هدف از کلاسهای DatePickerDialog و TimePickerDialog با کلاس calender در
کد برنامه اندرویدی خود استفاده خواهیم کرد
و اما چرا ما از dialog میخایم استفاده کنیم به این دلیل که میخایم فضای کمتری در صفحه
اشغال کنیم وگرنه می توانستیم به صورت جدا از این کلاس ها استفاده کنیم
کلاس های DatePickerDialog و TimePickerDialog به ترتیب متد های
برگشت فراخوانی ()onDateSetListener و() onTimeSetListener را دارند
این متدهای برگشتی زمانی که کاربرتاریخ و زمان را پر میکنند به ترتیب فراخوانی می شوند
علاوه بر دو متد ذکر شده در بالا برای DatePickerDialog چند متد دیگر هم در پایین برای شما آوردم
()getDayOfMonth
این متد روز منتخب ماه را دریافت می کند
()getMonth
ماه منتخب را دریافت می کند
()getYear
سال منتخب را دریافت می کند
(setMaxDate(long maxDate
این متد حداکثر تاریخ پشتیبانی شده توسط این DatePicker را در میلی ثانیه
از اول ژانویه 1970 ساعت 00:00:00 در منطقه زمانی ()getDefault تعیین می کند
(setMinDate(long minDate
این روش حداکثر تاریخ پشتیبانی شده توسط این NumberPicker را در میلی ثانیه
از اول ژانویه 1970 ساعت 00:00:00 در منطقه زمانی getDefault () تعیین می کند
(setSpinnersShown(boolean shown
این روش تعیین می کند که آیا اسپینرها نشان داده شده اند یا خیر
(updateDate(int year, int month, int dayOfMonth
این روش تاریخ فعلی را به روز می کند
()getCalendarView
این متد View تقویم را برمی گرداند
()getFirstDayOfWeek
روز اول هفته برمی گردد
مثال
activity_main.xml
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<EditText
android:layout_width="200dp"
android:layout_height="wrap_content"
android:id="@+id/in_date"
android:layout_marginTop="82dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SELECT DATE"
android:id="@+id/btn_date"
android:layout_alignBottom="@+id/in_date"
android:layout_toRightOf="@+id/in_date"
android:layout_toEndOf="@+id/in_date" />
<EditText
android:layout_width="200dp"
android:layout_height="wrap_content"
android:id="@+id/in_time"
android:layout_below="@+id/in_date"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SELECT TIME"
android:id="@+id/btn_time"
android:layout_below="@+id/btn_date"
android:layout_alignLeft="@+id/btn_date"
android:layout_alignStart="@+id/btn_date" />
</RelativeLayout>
MainActivity.java
package com.hamyarandroid.myapplication;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity implements
View.OnClickListener {
Button btnDatePicker, btnTimePicker;
EditText txtDate, txtTime;
private int mYear, mMonth, mDay, mHour, mMinute;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnDatePicker=(Button)findViewById(R.id.btn_date);
btnTimePicker=(Button)findViewById(R.id.btn_time);
txtDate=(EditText)findViewById(R.id.in_date);
txtTime=(EditText)findViewById(R.id.in_time);
btnDatePicker.setOnClickListener(this);
btnTimePicker.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v == btnDatePicker) {
// Get Current Date
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
txtDate.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year);
}
}, mYear, mMonth, mDay);
datePickerDialog.show();
}
if (v == btnTimePicker) {
// Get Current Time
final Calendar c = Calendar.getInstance();
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);
// Launch Time Picker Dialog
TimePickerDialog timePickerDialog = new TimePickerDialog(this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay,
int minute) {
txtTime.setText(hourOfDay + ":" + minute);
}
}, mHour, mMinute, false);
timePickerDialog.show();
}
}
}