1,先寫佈局文件,把時間選擇器和日期選擇器都放到一塊兒去 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/write" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical" > <DatePicker android:id="@+id/time_data" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="15dp" /> <TimePicker android:id="@+id/time_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="15dp" /> </LinearLayout> </LinearLayout>
2,寫一個自定義控件實體類java
/** * @author 做者 dpc * @date 建立時間:2015年12月26日 下11:41:50 * @parameter * @since * @return */ public class ShowTime { String data,time = "" ; public ShowTime(Context c,final ShowTimeIn s){ View view = LayoutInflater.from(c).inflate(R.layout.timescheh, null); final DatePicker da = (DatePicker) view.findViewById(R.id.time_data); Calendar calendar=Calendar.getInstance(); int year=calendar.get(Calendar.YEAR); int monthOfYear=calendar.get(Calendar.MONTH); int dayOfMonth=calendar.get(Calendar.DAY_OF_MONTH); data = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); da.init(year, monthOfYear, dayOfMonth, new OnDateChangedListener(){ public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { //dateEt.setText("您選擇的日期是:"+year+"年"+(monthOfYear+1)+"月"+dayOfMonth+"日。"); data = "" ; data += year ; data += "-" ; if ((monthOfYear+1) < 10) { data += "0" ; data += (monthOfYear+1) ; }else { data += (monthOfYear+1) ; } data += "-" ; if (dayOfMonth < 10) { data += "0" ; data += dayOfMonth ; }else { data += dayOfMonth ; } } }); final TimePicker ti = (TimePicker) view.findViewById(R.id.time_time); int hour = calendar.get(Calendar.HOUR_OF_DAY); int m = calendar.get(Calendar.MINUTE); final int ss = calendar.get(Calendar.SECOND); ti.setCurrentHour(hour); //ti.setIs24HourView(true); if (hour < 10){ time += "0" ; time += hour ; }else { time += hour ; } time += ":" ; if (m < 10){ time += "0" ; time += m ; }else { time += m ; } time += ":" ; if (ss < 10){ time += "0" ; time += ss ; }else { time += ss ; } ti.setOnTimeChangedListener(new OnTimeChangedListener() { public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { // TODO Auto-generated method stub time = "" ; if (hourOfDay < 10){ time += "0" ; time += hourOfDay ; }else { time += hourOfDay ; } time += ":" ; if (minute < 10){ time += "0" ; time += minute ; }else { time += minute ; } time += ":" ; if (ss < 10){ time += "0" ; time += ss ; }else { time += ss ; } } }); Dialog dialog = new AlertDialog.Builder(c) //.setIcon(android.R.drawable.ic_menu_week) //注入本身的佈局文件 .setView(view) .setPositiveButton("肯定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub s.GetData(data, time); dialog.dismiss(); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.dismiss(); } }) .create(); dialog.show(); } // 這裏寫了一個回調函數的接口 public interface ShowTimeIn { void GetData(String data ,String time); } }
3,此控件的用法獲取選擇的時間和日期。android
// 設置時間日期 jckssj.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { new ShowTime( mainactivity.this, new com.gaosheng.spyx.Fpmsmsmobile.one.ShowTime.ShowTimeIn() { @Override public void GetData(String data, String time) { // TODO Auto-generated method stub jckssj.setText(data + " " + time); sjStr = data + " " + time; } }); } });