Android自定义dialog可选择展示年月日时间选择栏
短信预约 -IT技能 免费直播动态提醒
自定义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);
}
}<pre name="code" class="java">//调用方式
final Calendar calendar = Calendar.getInstance(); </pre><pre name="code" class="java"><span style="white-space:pre"> </span>//没有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();
</pre><br>
<pre></pre>
<h3><a name="t2"></a><em>解决7.0系统使用该方式调用崩溃的情况(只遇到在小米7.0系统崩溃,华为等7.0不会崩溃)</em></h3>
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可选择展示年月日时间选择栏,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程网网站的支持!
您可能感兴趣的文章:Android 自定义AlertDialog对话框样式Android中ProgressDialog的dismiss()与cancel()方法的区别Android仿IOS自定义AlertDialog提示框Android仿支付宝微信支付密码界面弹窗封装dialogAndroid实现底部对话框BottomDialog弹出实例代码Android实现自定义圆角对话框Dialog的示例代码Android Dialog中软键盘的显示与隐藏的示例Android 常用log 关键字
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341