自定义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
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!