HackNine 避免在EditText中验证日期

1.概要:

为什么不直接为EditTText设置一个点击监听器,而非要使用Button呢?

答案是:使用Button更安全,因为用户无法修改Button的文本内容。如果使用EditText,并且只设置了点击监听器,用户可以通过光标获取该

控件的焦点,这样便可以绕过DatePicker控件直接修改EditText的文本内容

2.实现思路:

将Button的背景设置成EditText的背景,在点击后弹去DatePicker控件,选定好时间后修改BUutton的text

3.效果图:

  

4.代码:

 1 public class MainActivity extends Activity {
 2
 3     private Button btn;
 4     private int year;
 5     private int month;
 6     private int day;
 7     private DatePickerDialog datePickDialog;
 8
 9     @Override
10     protected void onCreate(Bundle savedInstanceState) {
11         super.onCreate(savedInstanceState);
12         setContentView(R.layout.activity_main);
13         btn = (Button) findViewById(R.id.btn);
14         Calendar calendar = Calendar.getInstance();
15         year = calendar.get(Calendar.YEAR);
16         month = calendar.get(Calendar.MONTH);
17         day = calendar.get(Calendar.DAY_OF_MONTH);
18         datePickDialog = new DatePickerDialog(MainActivity.this,
19                 new OnDateSetListener() {
20
21                     @Override
22                     public void onDateSet(DatePicker view, int year,
23                             int monthOfYear, int dayOfMonth) {
24                         btn.setText(year + "/" + monthOfYear + "/" + dayOfMonth);
25                     }
26                 }, year, month, day);
27
28         btn.setOnClickListener(new OnClickListener() {
29
30             @Override
31             public void onClick(View v) {
32                 datePickDialog.show();
33             }
34         });
35     }
36
37 }
activity_main.xml
 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     tools:context=".MainActivity" >
 7
 8     <Button
 9         android:id="@+id/btn"
10         android:layout_width="match_parent"
11         android:layout_height="wrap_content"
12         android:background="@android:drawable/edit_text" />
13
14 </LinearLayout>
 
时间: 2024-07-29 18:03:39

HackNine 避免在EditText中验证日期的相关文章

Android开发技巧二--避免在EditText中验证日期

开发者都知道验证表单里的数据是令人厌烦而且容易出错的,日期输入框的验证也是如此.我们可以开发出一个外观看起来与EditText相同Button,点击该Button后,会显示一个DatePicker控件. 要实现上面的想法,需要将Button控件的默认背景改成EditText的背景. 看一下main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q

javascript 通过Date对象验证日期合法性

通常来说,javascript验证日期的有效性可以通过正则判断 但正则表达式无法精准验证日期的有效性,你无法通过正则表达式判断出1900-02-29是非法日期而2000-02-29是合法日期,而且正则表达式匹配起来比较繁琐. 要想精确验证,最容易想到的方法就是通过月份判断日期是否合法(1~28/29/30/31),你可以用一个数组表示每月的天数,如daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31],但你会发现daysInMonth[1]这个值可能是

验证日期的正则表达式比较全面地验证

原文:验证日期的正则表达式比较全面地验证 1.验证日期的正则表达式加入闰年的判断以及思路分析 进入正题之前,我们需要澄清两个概念: 一,什么是合法的日期范围?对于不同的应用场景,这个问题有不同的解释.这里采纳MSDN中的约定: DateTime 值类型表示值范围在公元(基督纪元)0001 年 1 月 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间. 二,关于闰年的阐释.人民教育出版社小学数学室的解释浅明易懂(media

正则表达式验证日期(多种日期格式)——转载

1.概述 首先需要说明的一点,无论是 Winform ,还是 Webform ,都有很成熟的日历控件,无论从易用性还是可扩展性上看,日期的选择和校验还是用日历控件来实现比较好. 前几天在 CSDN 多个版块看到需要日期正则的帖子,所以整理了这篇文章,和大家一起讨论交流,如有遗漏或错误的地方,还请大家指正. 日期正则一般是对格式有要求,且数据不是直接由用户输入时使用.因应用场景的不同,写出的正则也不同,复杂程度也自然不同.正则的书写需要根据具体情况具体分析,一个基本原则就 是:只写合适的,不写复杂

EditText中输入信息的限制的方法

应用场景 在Android应用中有时需要EditText中只允许输入约定的一些字符,禁止输入其他字符.这里列举了一些可能的应用场景. 1. 场景一 在通讯录保存好友信息界面中填写好友的电话号码时,应当只能输入数字,禁止输入其他字符. 2. 场景二 在登录界面中输入用户名和密码时,由于很多账号系统都不支持中文的用户名和密码,只允许使用英文字母和数字.如果可以禁止在输入框中输入中文可以减少不必要的登录验证过程,也方便了用户操作. 3. 场景三 在邮箱地址的输入框中,应当只允许输入英文字母,数字和@.

在Java 8中如何处理日期和时间

常有人问我学习一个新库的最好方式是什么?我的答案是在实际项目中使用它.项目中有很多真正的需求驱使开发者去发掘并学习新库.简单得说就是任务驱动学习探 索.这对Java 8新日期时间API也不例外.我创建了20个基于任务的实例来学习Java 8的新特性.从最简单创建当天的日期开始,然后创建时间及时区,接着模拟一个日期提醒应用中的任务--计算重要日期的到期天数,例如生日.纪念日.账单 日.保费到期日.信用卡过期日等.示例 1.在Java 8中获取今天的日期Java 8 中的 LocalDate 用于表

012-关于EditText中的getText()方法的返回值类型以及string的转换问题(转)

原文链接:https://blog.csdn.net/mattdong0106/article/details/10139389 EditText中的getText()方法的返回值为CharSequence,如果我们想要获得string类型数据的话,需要在后边加上.toString 另外,String类型转为int:Integer.parseInt(str); String类型转为float:Float.parseFloat(str); string和Date的相互转换: DateFormat

FreeMarker中的日期时间处理

1. FreeMarker中的日期时间格式设置 FreeMarker中可以分别对date.time.datetime三种类型的日期时间设置格式,例如: config.setDateTimeFormat("yyyy-MM-dd HH:mm:ss"); config.setDateFormat("yyyy-MM-dd"); config.setTimeFormat("HH:mm:ss"); 当我们对一个页面变量使用 ?date ?time ?date

thymeleaf中的日期格式化

本篇介绍些thymeleaf中的日期格式化的方法: 1.用#dates.format来解决: <span th:text="${#dates.format(user.date, 'yyyy-MM-dd')}">4564546</span> 或者<span th:text="${#dates.format(billingForm.startTime,'yyyy-MM-dd HH:mm:ss')}">4564546</span&