android datepicker 自定义,Android DatePicker的简单自定义

最近因为需求做了一个简单的选择日期的demo,我们可以同android自带的DatePicker控件达到选择日期简单联动的效果,用法挺简单的。

当在dialog在这包下android.app.AlertDialog;

选择这种样式super(context, AlertDialog.THEME_HOLO_DARK)

效果:

48319a0e73c96323bd80893d55b85e5d.gif

THEME_HOLO_DARK.gif

选择这种样式super(context, AlertDialog.THEME_HOLO_LIGHT);

效果:

5521c0cc54053f09a8d61c4e129ff2f3.gif

THEME_HOLO_LIGHT.gif

当在dialog在这包下android.support.v7.app.AlertDialog是这种效果,

super(context, 0) 按钮的位置不一样了。。

60c20c4d3eba956f0f002f7ab41d8690.gif

android.support.v7.app.AlertDialog;.gif

/*

* Created by anymo on 2017/4/6.

*/

public class DialogDatePicker extends AlertDialog implements

DialogInterface.OnClickListener, DatePicker.OnDateChangedListener {

private static final String YEAR = "year";

private static final String MONTH = "month";

private static final String DAY = "day";

private OnDateSetListener listener;

private DatePicker picker;

/******

* 日期选择回掉事件

*/

public interface OnDateSetListener {

void onDateSet(DatePicker datePicker, int year, int month,

int day);

}

public DialogDatePicker(Context context, int theme,OnDateSetListener listener, int year, int month,int day) {

// super(context, AlertDialog.THEME_HOLO_DARK);

// super(context, AlertDialog.THEME_HOLO_LIGHT);

// super(context,AlertDialog.THEME_DEVICE_DEFAULT_DARK);

// super(context,AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);

super(context, AlertDialog.THEME_TRADITIONAL);

this.listener = listener;

Context themeContext = getContext();

setButton(BUTTON_POSITIVE, "ensure", this);

setButton(BUTTON_NEGATIVE, "cancel", this);

setIcon(0);

LayoutInflater inflater =(LayoutInflater)themeContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View view = inflater.inflate(R.layout.dialog_datepicker, null);

setView(view);

picker = (DatePicker) view.findViewById(R.id.datepick);

picker.init(year, month, day, this);

}

@Override

public void onClick(DialogInterface dialog, int which) {

if (which == BUTTON_POSITIVE)

tryNotifyDateSet();

}

private void tryNotifyDateSet() {

if (listener != null) {

picker.clearFocus();

//月份要加1

listener.onDateSet(picker, picker.getYear(), picker.getMonth() + 1, picker.getDayOfMonth());

}

}

@Override

public void onDateChanged(DatePicker view, int year, int

monthOfYear, int dayOfMonth) {

if (view.getId() == R.id.datepick)

picker.init(year, monthOfYear, dayOfMonth, this);

}

}

android:calendarViewShown="false"这个是为了不显示日历控件

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:gravity="center"

android:layout_height="match_parent">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:gravity="center_horizontal"

android:orientation="vertical"

android:padding="5dip">

android:id="@+id/datepick"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:calendarViewShown="false">

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值