Android自定义dialog可选择展示年月日时间选择栏
发布时间 - 2026-01-10 23:24:05 点击率:次自定义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
# 自定义dialog
# Android日期选择器实现年月日三级联动
# Android动态显示当前年月日时分秒系统时间(示例代码)
# android实现双日期选择控件(可隐藏日
# 只显示年月)
# Android 用Time和Calendar获取系统当前时间源码分享(年月日时分秒周几)
# Android如何实现年月选择器功能
# 自定义
# 小编
# 日中
# 华为
# 在此
# 给大家
# 可选择
# 所述
# 给我留言
# 感谢大家
# 疑问请
# 有任何
# 就好了
# void
# Override
# listener
# day
# month
# onDateChanged
# theme
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在阿里云域名上完成建站全流程?
*服务器网站为何频现安全漏洞?
详解阿里云nginx服务器多站点的配置
如何在局域网内绑定自建网站域名?
如何在阿里云通过域名搭建网站?
简单实现Android文件上传
个人摄影网站制作流程,摄影爱好者都去什么网站?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
公司网站制作需要多少钱,找人做公司网站需要多少钱?
Swift中swift中的switch 语句
如何在宝塔面板中修改默认建站目录?
如何获取免费开源的自助建站系统源码?
网站建设整体流程解析,建站其实很容易!
android nfc常用标签读取总结
怎样使用JSON进行数据交换_它有什么限制
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
python中快速进行多个字符替换的方法小结
打造顶配客厅影院,这份100寸电视推荐名单请查收
做企业网站制作流程,企业网站制作基本流程有哪些?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
黑客如何利用漏洞与弱口令入侵网站服务器?
Laravel如何生成API文档?(Swagger/OpenAPI教程)
详解vue.js组件化开发实践
如何快速搭建支持数据库操作的智能建站平台?
bing浏览器学术搜索入口_bing学术文献检索地址
如何在阿里云ECS服务器部署织梦CMS网站?
Laravel API资源类怎么用_Laravel API Resource数据转换
QQ浏览器网页版登录入口 个人中心在线进入
轻松掌握MySQL函数中的last_insert_id()
Android自定义listview布局实现上拉加载下拉刷新功能
Swift中循环语句中的转移语句 break 和 continue
Python文件流缓冲机制_IO性能解析【教程】
教你用AI润色文章,让你的文字表达更专业
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
Swift中switch语句区间和元组模式匹配
用yum安装MySQLdb模块的步骤方法
如何在腾讯云服务器上快速搭建个人网站?
图册素材网站设计制作软件,图册的导出方式有几种?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
Python数据仓库与ETL构建实战_Airflow调度流程详解
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?

