700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > android alertdialog 自定义时间 Android自定义dialog可选择展示年月日时间选择栏

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

时间:2021-11-15 07:58:04

相关推荐

android alertdialog 自定义时间 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, int year, int monthOfYear, int dayOfMonth) {

super(context, theme, listener, year, monthOfYear, 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 year, int month, int day) {

super.onDateChanged(view, year, 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 year, int monthOfYear, 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 theme,

OnDateSetListener callBack, int year, int monthOfYear,

int dayOfMonth) {

super(context, theme, callBack, year, monthOfYear, 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, null));

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

NumberPicker mDaySpinner = (NumberPicker) findViewById(getContext().getResources().getIdentifier("android:id/day", null, 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 year, int month, int day) {

super.onDateChanged(view, year, month, day);

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

}

}

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。