《Android开发卷——自定义日期选择器(一)》:http://blog.csdn.net/chillax_li/article/details/19047913

《Android开发卷——自定义日期选择器(二)》:http://blog.csdn.net/chillax_li/article/details/19172899

之后,在之前的基础上添加了两个按钮的单击事件

public class TestDialog extends Dialog {

	private Context context;
private int style; private NumberPicker np1,np2,np3;
private static String str1 = "1999";
private static String str2 = "1";
private static String str3 = "1"; public TestDialog(Context context) {
super(context);
this.context = context;
} public TestDialog(Context context, int style) {
super(context);
this.context = context;
this.style = style;
} @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.dialog); np1 = (NumberPicker) findViewById(R.id.np1);
np2 = (NumberPicker) findViewById(R.id.np2);
np3 = (NumberPicker) findViewById(R.id.np3); np1.setMaxValue(2299);
np1.setMinValue(1970);
np1.setValue(1999);
np1.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { @Override
public void onValueChange(NumberPicker arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
str1 = np1.getValue() + "";
if (Integer.parseInt(str1) % 4 == 0
&& Integer.parseInt(str1) % 100 != 0
|| Integer.parseInt(str1) % 400 == 0) {
if(str2.equals("1")||str2.equals("3")||str2.equals("5")||str2.equals("7")||str2.equals("8")||str2.equals("10")||str2.equals("12")){
np3.setMaxValue(31);
np3.setMinValue(1);
}else if(str2.equals("4")||str2.equals("6")||str2.equals("9")||str2.equals("11")){
np3.setMaxValue(30);
np3.setMinValue(1);
}else{
np3.setMaxValue(29);
np3.setMinValue(1);
} } else {
if(str2.equals("1")||str2.equals("3")||str2.equals("5")||str2.equals("7")||str2.equals("8")||str2.equals("10")||str2.equals("12")){
np3.setMaxValue(31);
np3.setMinValue(1);
}else if(str2.equals("4")||str2.equals("6")||str2.equals("9")||str2.equals("11")){
np3.setMaxValue(30);
np3.setMinValue(1);
}else{
np3.setMaxValue(28);
np3.setMinValue(1);
}
} }
}); np2.setMaxValue(12);
np2.setMinValue(1);
np2.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { @Override
public void onValueChange(NumberPicker arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
str2 = np2.getValue()+"";
if(str2.equals("1")||str2.equals("3")||str2.equals("5")||str2.equals("7")||str2.equals("8")||str2.equals("10")||str2.equals("12")){
np3.setMaxValue(31);
np3.setMinValue(1);
}else if(str2.equals("4")||str2.equals("6")||str2.equals("9")||str2.equals("11")){
np3.setMaxValue(30);
np3.setMinValue(1);
}else{
if (Integer.parseInt(str1) % 4 == 0
&& Integer.parseInt(str1) % 100 != 0
|| Integer.parseInt(str1) % 400 == 0) {
np3.setMaxValue(29);
np3.setMinValue(1);
} else {
np3.setMaxValue(28);
np3.setMinValue(1);
}
}
}
}); np3.setMaxValue(31);
np3.setMinValue(1);
np3.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { @Override
public void onValueChange(NumberPicker arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
str3 = np3.getValue()+"";
}
}); // 设置返回按钮事件和文本
if (backButtonText != null) {
Button bckButton = ((Button)findViewById(R.id.dialog_back));
bckButton.setText(backButtonText); if (backButtonClickListener != null) {
bckButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
backButtonClickListener.onClick(new TestDialog(getContext()), DialogInterface.BUTTON_NEGATIVE);
dismiss();
}
});
}
} else {
findViewById(R.id.dialog_back).setVisibility(View.GONE);
} // 设置确定按钮事件和文本
if (confirmButtonText != null) {
Button cfmButton = ((Button)findViewById(R.id.dialog_confirm));
cfmButton.setText(confirmButtonText); if (confirmButtonClickListener != null) {
cfmButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
confirmButtonClickListener.onClick(new TestDialog(getContext()), DialogInterface.BUTTON_NEGATIVE);
dismiss();
}
});
}
} else {
findViewById(R.id.dialog_confirm).setVisibility(View.GONE);
}
} private String backButtonText; // 对话框返回按钮文本
private String confirmButtonText; // 对话框确定文本 // 对话框按钮监听事件
private DialogInterface.OnClickListener backButtonClickListener,
confirmButtonClickListener; /**
* 设置back按钮的事件和文本
*
* @param backButtonText
* @param listener
* @return
*/
public void setBackButton(String backButtonText,
DialogInterface.OnClickListener listener) {
this.backButtonText = backButtonText;
this.backButtonClickListener = listener;
} /**
* 设置确定按钮事件和文本
*
* @param negativeButtonText
* @param listener
* @return
*/
public void setConfirmButton(String confirmButtonText,
DialogInterface.OnClickListener listener) {
this.confirmButtonText = confirmButtonText;
this.confirmButtonClickListener = listener;
} public static String getDate(){
return str1+"-"+str2+"-"+str3;
} @Override
public void show() {
// TODO Auto-generated method stub
super.show();
}
}

项目地址:http://download.csdn.net/detail/chillax_li/6923505

在这里有个问题要注意:就是切勿误删values-v11和values-v14这两个文件夹,因为这两个表示Android 3.*以上的样式,如果误删了,样式会变得很丑

(正常情况)(误删文件夹情况,NumPicker样式被改变,使用android
2.*的旧版本)

尊重原创,转载请注明出处:http://blog.csdn.net/chillax_li/article/details/19212895

《Android开发卷——自定义日期选择器(三)》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. 基于EasyCV复现ViTDet:单层特征超越FPN

    简介: ViTDet其实是恺明团队MAE和ViT-based Mask R-CNN两个工作的延续.MAE提出了ViT的无监督训练方法,而ViT-based Mask R-CNN给出了用ViT作为bac ...

  2. Kubernetes 入门教程

    简介:本文是一篇 kubernetes(下文用 k8s 代替)的入门文章,将会涉及 k8s 的架构.集群搭建.一个 Redis 的例子,以及如何使用 operator-sdk 开发 operator ...

  3. [Linux] 启动管理: 运行级别

    Link:https://www.cnblogs.com/farwish/p/14983932.html

  4. WPF 已知问题 Popup 吃掉 PreviewMouseDown 事件

    在 WPF 中,使用 Popup 也许会看到 PreviewMouseDown 事件被吃掉 因为 PreviewMouseDown 是 RoutingStrategy.Direct 路由事件,不能在多 ...

  5. dotnet C# 高性能配置文件读写库 dotnetCampus.Configurations 简介

    在应用程序运行的时,需要根据不同的配置执行不同的内容.有很多根据配置而初始化的功能往往是在应用程序启动的时候需要执行.对于很多类型的应用程序,特别是客户端的应用程序,启动的性能特别重要.也因此,在启动 ...

  6. visual studio 2008的试用版评估期已结束(附无法使用产品密钥)的解决方法

    visual studio 2008过了试用期后再次启动提示对话框:visual studio的试用版评估期已结束. 解决办法: 第一步,在"控制面板"中启动"添加删除程 ...

  7. SAP集成技术(八)成熟度模型

    成熟度模型的目的在于使用模型和标准来评估当前的集成能力,并确定必须建立哪些能力,以达到期望的成熟度级别. 成熟度级别描述了一个特定主题复杂性对于某种方法或模型的成熟度.基于定义的需求和标准的分类,得出 ...

  8. 【简说Python WEB】Flask应用的单元测试

    [简说Python WEB]Flask应用的单元测试 tests/test_basics.py import unittest from flask import current_app from a ...

  9. 简说Python之flask初体验

    目录 flask初体验 1.安装Flask 2.创建"Hello, World" Flask应用 3.执行结果 flask是python web的轻量框架,简单的几条命令就可以创建 ...

  10. 特工17Agent17汉化版游戏破解金币方法修改破解金币的增加方法

    又是一个renpy游戏,昨晚搞了半个小时搞定的,其实这个游戏要赚钱也不难,就是点点点就可以了,但是我觉得还是挺费劲的,因为好多道具都很贵,攒钱又不怎么容易,花钱的地方还挺多的,所以干脆不如直接破解了算 ...