今天下了個需求網上找了一下發現了DatePicker選擇器感覺比較好用:那是廢話不多說直接上代碼。
首先呢我沒有做任何修改樣式,直接定義一個自定義對話框:(不會自定義對話框的找我前面的文章有介紹dialog)
在resi啊的layout裡面建立xml檔案dialog_date(直接複制拿去用)
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<DatePicker
android:id="@+id/datePicker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:calendarViewShown="false"
android:endYear="2027"
android:startYear="2007" />
</LinearLayout>
然後在你所需要的頁面直接封裝方法:(或者直接寫不怕亂的情況)
//目前年
private int years;
//目前月
private int month;
//目前日
private int day;
private void riqixuanze(){
years = DataTime.getInstance().year();
month = DataTime.getInstance().month();
day = DataTime.getInstance().day();
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setPositiveButton("設定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
設定年的控件.setText(years +"");
設定月的控件.setText(month+"");
設定日的控件.setText(day +"");
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ToastShow.show(ShipmentTallyRecord.this,"您沒有選中日期");
dialog.dismiss();
}
});
final AlertDialog dialog = builder.create();
View dialogView = View.inflate(this, R.layout.dialog_date, null);
final DatePicker datePicker = (DatePicker) dialogView.findViewById(R.id.datePicker);
dialog.setTitle("設定日期");
dialog.setView(dialogView);
dialog.show();
//初始化日期監聽事件這是月的時候需要-1
datePicker.init(years, month - 1, day, new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
years=year;
//擷取月份的時候需要+1
month=monthOfYear+1;
day=dayOfMonth;
}
});
}
然後你會發現,this爆紅寫你自己的類名.this就行了,你還發現時間類都是報錯了
那麼我在送你一個我自己封裝的時間類上代碼:
public class DataTime {
private static Calendar c;
private static DataTime dataTime;
private int year;
private int month;
private int day;
private int hour;
private int minute;
private DataTime(){
c = Calendar.getInstance();
}
public static DataTime getInstance(){
if(dataTime == null){
synchronized (DataTime.class){
if(dataTime == null) {
dataTime=new DataTime();
}
}
}
return dataTime;
}
//年
public int year(){
year = c.get(Calendar.YEAR);
return year;
}
//月
public int month(){
month = c.get(Calendar.MONTH);
return month+1;
}
//日
public int day(){
day = c.get(Calendar.DAY_OF_MONTH);
return day;
}
//小時
public int hour(){
hour = c.get(Calendar.HOUR_OF_DAY);
return hour;
}
//分鐘
public int minute(){
minute = c.get(Calendar.MINUTE);
return minute;
}
public String nyr(){
int years = year();
int months = month();
int days = day();
String s= years +"-"+ months+"-"+ days;
return s;
}
// 目前時間
public String doingshijan(){
String s;
String monthss;
String dayss;
String hours;
String minutes;
int years = year();
int months = month();
if(months>=10){
monthss=months+"";
}else{
monthss="0"+months;
}
int days = day();
if(days>=10){
dayss=days+"";
}else{
dayss="0"+days;
}
int hour = hour();
if(hour>=10){
hours=hour+"";
}else{
hours="0"+hour;
}
int minute = minute();
if(minute>=10){
minutes=minute+"";
}else{
minutes="0"+minute;
}
s=years +"-"+ monthss+"-"+ dayss+" "+hours+":"+minutes;
return s;
}
}
這樣就OK了。友情提示盡量把時間選擇調用的方法放在監聽裡面,當dialog用。
歡迎新手采納借鑒,歡迎大佬指點。