android 日历控件 设置截至日期,Android日期日历控件:TimesSquare使用心得

TimesSquare实现选择日期日历控件,可单选,多选,区间范围和对话框四种方式。如图展示 区间范围视图。使用该控件,除了在布局文件中使用该控件外,需要为它创建

TimesSquare实现选择日期日历控件,可单选,,多选,区间范围和对话框四种方式。

如图展示

区间范围视图。

1341e48dde39ee8f97774329a630c380.png

使用该控件,除了在布局文件中使用该控件外,需要为它创建一个编辑器:如SampleDecorator

代码示例:

public class SampleDecorator implements CalendarCellDecorator {

@Override

public void decorate(CalendarCellView cellView, Date date) {

String dateString = "";

MonthCellDescriptor cell = (MonthCellDescriptor) cellView.getTag();

Date currentDate = new Date();

if (currentDate.getYear() == date.getYear()

&& currentDate.getMonth() == date.getMonth()

&& currentDate.getDate() == date.getDate()) {

dateString = "本日";

} else {

dateString = Integer.toString(date.getDate());

}

if (cell.isInDate() && !cell.isOutDate()) {

dateString = "入住";

} else if (cell.isInDate() && cell.isOutDate()) {

dateString = "离店";

}

SpannableString string = new SpannableString(dateString);

string.setSpan(new RelativeSizeSpan(0.5f), 0, dateString.length(),

Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

cellView.setText(string);

}

}

可以通过检测cell(每个格子)的属性来控制cell中对应的显示内容,达到定制效果。

在Activity中使用时,需要初始化控件。

示例代码:

private CalendarPickerView calendar;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_date);

ActivityBack.getInstance(this);

final Calendar nextYear = Calendar.getInstance();

nextYear.add(Calendar.YEAR, 1);

final Calendar lastYear = Calendar.getInstance();

lastYear.add(Calendar.YEAR, -1);

calendar = (CalendarPickerView) findViewById(R.id.calendar_picker);

List decorators = new ArrayList();

decorators.add(new SampleDecorator());

calendar.setDecorators(decorators);

calendar.init(lastYear.getTime(), nextYear.getTime())

.inMode(SelectionMode.SINGLE).withSelectedDate(new Date());

Calendar today = Calendar.getInstance();

ArrayList dates = new ArrayList();

Intent intent = getIntent();

// 设置多选日期起始位置从当前推迟多少天

today.add(

Calendar.DATE,

Utils.getDateDeffence((new Date().toString()),

intent.getStringExtra("INDATE")));

dates.add(today.getTime());

// 设置多选日期结束位置从入住日期推迟多少天

today.add(

Calendar.DATE,

Utils.getDateDeffence(intent.getStringExtra("INDATE"),

intent.getStringExtra("OUTDATE")));

dates.add(today.getTime());

calendar.init(new Date(), nextYear.getTime())

.inMode(SelectionMode.RANGE).withSelectedDates(dates);

}

@Override

public void onConfigurationChanged(Configuration newConfig) {

}

public void finish(View v) {

List dates = calendar.getSelectedDates();

Date firstdate = dates.get(0);

Date lastdate = dates.get(dates.size() - 1);

if (firstdate != null && lastdate != null) {

Intent intent = new Intent();

intent.putExtra("date1", firstdate.toString());

intent.putExtra("date2", lastdate.toString());

intent.putExtra("night", dates.size() - 1);

setResult(RESULT_OK, intent);

} else {

setResult(RESULT_CANCELED, null);

}

finish();

}

需要定制其他功能可以修改Library库中的对象编辑器属性来添加监听属性。

控件下载地址:等待更新

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值