android自定义日期年月日,Android自定义dialog可选择展示年月日时间选择栏

自定义dialog

package com.poptest;

import android.app.DatePickerDialog;

import android.content.Context;

import android.view.View;

import android.view.ViewGroup;

import android.widget.DatePicker;

//dialog类

public class YearPickerDialog extends DatePickerDialog {

public YearPickerDialog(Context context,OnDateSetListener callBack,int year,int monthOfYear,int dayOfMonth) {

super(context,callBack,year,monthOfYear,dayOfMonth);

this.setTitle(year + "年" + (monthOfYear + 1) + "月");

//getChildAt(2)隐藏日的显示可以改变隐藏的对象

((ViewGroup) ((ViewGroup) this.getDatePicker().getChildAt(0)).getChildAt(0)).getChildAt(2).setVisibility(View.GONE);

((ViewGroup) ((ViewGroup) this.getDatePicker().getChildAt(0)).getChildAt(0)).getChildAt(2).setVisibility(View.GONE);

}

public YearPickerDialog(Context context,int theme,OnDateSetListener listener,theme,listener,dayOfMonth);

this.setTitle(year + "年" + (monthOfYear + 1) + "月");

((ViewGroup) ((ViewGroup) this.getDatePicker().getChildAt(0)).getChildAt(0)).getChildAt(2).setVisibility(View.GONE);

((ViewGroup) ((ViewGroup) this.getDatePicker().getChildAt(0)).getChildAt(0)).getChildAt(2).setVisibility(View.GONE);

}

@Override

public void onDateChanged(DatePicker view,int month,int day) {

super.onDateChanged(view,month,day);

this.setTitle(year + "年" + (month + 1) + "月");

}

}

时间处理类

//时间处理类

package com.poptest;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

public class DateUtil {

public static Date strToDate(String style,String date) {

SimpleDateFormat formatter = new SimpleDateFormat(style);

try {

return formatter.parse(date);

} catch (ParseException e) {

e.printStackTrace();

return new Date();

}

}

public static String dateToStr(String style,Date date) {

SimpleDateFormat formatter = new SimpleDateFormat(style);

return formatter.format(date);

}

public static String clanderTodatetime(Calendar calendar,String style) {

SimpleDateFormat formatter = new SimpleDateFormat(style);

return formatter.format(calendar.getTime());

}

public static String DateTotime(long date,String style) {

SimpleDateFormat formatter = new SimpleDateFormat(style);

return formatter.format(date);

}

}

//调用方式

final Calendar calendar = Calendar.getInstance();

   //没有AlertDialog.THEME_HOLO_LIGHT这个Theme出来的dialog非常丑

new YearPickerDialog(this,AlertDialog.THEME_HOLO_LIGHT,new DatePickerDialog.OnDateSetListener() {

@Override

public void onDateSet(DatePicker view,int dayOfMonth) {

calendar.set(Calendar.YEAR,year);

calendar.set(Calendar.MONTH,monthOfYear);

Log.d("###",DateUtil.clanderTodatetime(calendar,"yyyy-MM"));

}

},calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DATE)).show();

 
 

解决7.0系统使用该方式调用崩溃的情况(只遇到在小米7.0系统崩溃,华为等7.0不会崩溃)

package com.dmos;

import android.app.DatePickerDialog;

import android.content.Context;

import android.os.Bundle;

import android.widget.DatePicker;

import android.widget.LinearLayout;

import android.widget.NumberPicker;

public class MyDatePickerDialog extends DatePickerDialog{

public MyDatePickerDialog(Context context,int dayOfMonth) {

super(context,dayOfMonth);

}

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

LinearLayout mSpinners = (LinearLayout) findViewById(getContext().getResources().getIdentifier("android:id/pickers",null,null));

if (mSpinners != null) {

NumberPicker mYearSpinner = (NumberPicker) findViewById(getContext().getResources().getIdentifier("android:id/year",null));

NumberPicker mMonthSpinner = (NumberPicker) findViewById(getContext().getResources().getIdentifier("android:id/month",null));

NumberPicker mDaySpinner = (NumberPicker) findViewById(getContext().getResources().getIdentifier("android:id/day",null));

mSpinners.removeAllViews();

//如果要隐藏年,月,日中的某一项取消其addView就好了

if (mYearSpinner != null) {

mSpinners.addView(mYearSpinner);

}

if (mMonthSpinner!= null) {

mSpinners.addView(mMonthSpinner);

}

if (mDaySpinner != null) {

mSpinners.addView(mDaySpinner);

}

}

}

@Override

public void onDateChanged(DatePicker view,int day) {

super.onDateChanged(view,day);

setTitle(year+"年"+(month+1)+"月");

}

}

以上所述是小编给大家介绍的Android自定义dialog可选择展示年月日时间选择栏,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值