android自定义日期和时间选择对话框得实现

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,写一个自定义控件实体类

/**
 * @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,此控件的用法获取选择的时间和日期。

// 设置时间日期

  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;

       }

      });

   }

  });

转载于:https://my.oschina.net/u/2480757/blog/600587

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值