这个开源控件可以兼容到SDK8版本,可以自定义显示的年月日,以及时间范围,如图
如果我们只想显示两个月的日期选择区间:
final Calendar month = Calendar.getInstance();
month.add(Calendar.MONTH, 1);
然后初始化时候可以传进去一些参数
1 final CalendarPickerView dialogView = (CalendarPickerView) getLayoutInflater()2 .inflate(R.layout.dialog, null, false);3 if (text.getText().toString().equals("")) {4 dialogView.init(new Date(), month.getTime()).withSelectedDate(new Date());6 } else {7 Date date = DateUtils.getDate(text.getText().toString(), "yyyy-MM-dd");9 dialogView.init(new Date(), month.getTime()).withSelectedDate(date);
11 }
其中withSelectedDate(date)表示指定当前显示的日期,可以自定义。
具体Demo代码
1 package com.example.timesample;2 3 import java.util.Calendar;4 import java.util.Date;5 import java.util.GregorianCalendar;6 7 import com.squareup.timessquare.CalendarPickerView;8 import com.squareup.timessquare.CalendarPickerView.SelectionMode;9 10 import android.os.Bundle;11 import android.app.Activity;12 import android.app.AlertDialog;13 import android.content.DialogInterface;14 import android.util.Log;15 import android.view.Menu;16 import android.view.View;17 import android.view.View.OnClickListener;18 import android.widget.Button;19 import android.widget.TextView;20 import android.widget.Toast;21 22 public class MainActivity extends Activity {23 24 private Button btn;25 private TextView text;26 27 @Override28 protected void onCreate(Bundle savedInstanceState) {29 super.onCreate(savedInstanceState);30 setContentView(R.layout.activity_main);31 btn = (Button) findViewById(R.id.button1);32 text = (TextView) findViewById(R.id.textView1);33 34 final Calendar nextYear = Calendar.getInstance();35 nextYear.add(Calendar.YEAR, 1);36 final Calendar month = Calendar.getInstance();37 month.add(Calendar.MONTH, 1);38 39 btn.setOnClickListener(new OnClickListener() {40 41 @Override42 public void onClick(View v) {43 // TODO Auto-generated method stub44 45 final CalendarPickerView dialogView = (CalendarPickerView) getLayoutInflater()46 .inflate(R.layout.dialog, null, false);47 if (text.getText().toString().equals("")) {48 dialogView.init(new Date(), month.getTime())49 .withSelectedDate(new Date());50 } else {51 Date date = DateUtils.getDate(text.getText().toString(),52 "yyyy-MM-dd");53 dialogView.init(new Date(), month.getTime())54 .withSelectedDate(date);55 }56 57 new AlertDialog.Builder(MainActivity.this)58 .setTitle("时间选择控件")59 .setView(dialogView)60 .setNeutralButton("返回",61 new DialogInterface.OnClickListener() {62 @Override63 public void onClick(64 DialogInterface dialogInterface,65 int i) {66 dialogInterface.dismiss();67 }68 })69 .setPositiveButton("确定",70 new DialogInterface.OnClickListener() {71 @Override72 public void onClick(73 DialogInterface dialogInterface,74 int i) {75 long sd = dialogView.getSelectedDate()76 .getTime();77 Date dat = new Date(sd);78 GregorianCalendar gc = new GregorianCalendar();79 gc.setTime(dat);80 java.text.SimpleDateFormat format = new java.text.SimpleDateFormat(81 "yyyy-MM-dd ");82 String sb = format.format(gc.getTime());83 System.out.println(sb);84 text.setText(sb);85 dialogInterface.dismiss();86 }87 }).create().show();88 }89 });90 91 }92 93 @Override94 public boolean onCreateOptionsMenu(Menu menu) {95 // Inflate the menu; this adds items to the action bar if it is present.96 getMenuInflater().inflate(R.menu.main, menu);97 return true;98 }99
100 }
当前这个简单小Demo仅仅实现了其强大功能的一小部门,timessquare时间控件还支持选择时间段等强大功能,需要用到可以看源码。
Demo下载
http://download.csdn.net/detail/lj419855402/8232371