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

开发者都知道验证表单里的数据是令人厌烦而且容易出错的,日期输入框的验证也是如此。我们可以开发出一个外观看起来与EditText相同Button,点击该Button后,会显示一个DatePicker控件。

要实现上面的想法,需要将Button控件的默认背景改成EditText的背景。

看一下main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:id="@+id/btn_date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:background="@android:drawable/edit_text"
        android:gravity="center"
        android:text="选择生日" > <!--  android:background="@android:drawable/edit_text"背景设置成EditText样式 -->
    </Button>

</LinearLayout>

然后我们看一下MainActivity.java文件:

package com.yayun.edittextdatedemo;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;

public class MainActivity extends Activity {
private Button mButton;
static final int DATE_DIALOG_ID=0;
private int mYear;
private int mMonth;
private int mDay;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		mButton=(Button) findViewById(R.id.btn_date);
		mButton.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				showDialog(DATE_DIALOG_ID);//弹出对话框
			}
		});

	}
	private DatePickerDialog.OnDateSetListener mDateSetListener=new DatePickerDialog.OnDateSetListener() {//监听日期设置事件

		@Override
		public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
			mYear=year;
			mMonth=monthOfYear;
			mDay=dayOfMonth;
			updateDisplay();

		}

		private void updateDisplay() {//设置显示
		 mButton.setText(new StringBuilder().append(mYear).append("-").append(mMonth+1).append("-").append(mDay));

		}
	};
	protected Dialog onCreateDialog(int id){
		switch (id) {
		case DATE_DIALOG_ID:
			return new DatePickerDialog(this, mDateSetListener, mYear, mMonth, mDay);

		default:
			break;
		}
		return null;

	}

}

运行实例:

总结

1.android:background="@android:drawable/edit_text" 将Button显示成EditText样式;

2.注意创建日期对话框的方法。







时间: 2024-11-11 19:20:03

Android开发技巧二--避免在EditText中验证日期的相关文章

50个Android开发技巧(09 避免用EditText对日期进行验证)

我们都知道,在表单中对数据进行验证不但无聊并且easy出错. (原文地址:http://blog.csdn.net/vector_yi/article/details/24424713) 想象一下,一个表单内有若干个须要日期类型的输入,而你又不想对这些输入信息进行日期类型的验证,你会怎么做? 这里有一种解决的方法是,让用户觉得他们是在一个EditText中操作,但实际上是一个Button,点击这个Button时会弹出一个DatePicker. 为了让这个方法可行,我们须要改变这个Button的背

HackNine 避免在EditText中验证日期

1.概要: 为什么不直接为EditTText设置一个点击监听器,而非要使用Button呢? 答案是:使用Button更安全,因为用户无法修改Button的文本内容.如果使用EditText,并且只设置了点击监听器,用户可以通过光标获取该 控件的焦点,这样便可以绕过DatePicker控件直接修改EditText的文本内容 2.实现思路: 将Button的背景设置成EditText的背景,在点击后弹去DatePicker控件,选定好时间后修改BUutton的text 3.效果图: 4.代码: 1

Android 开发技巧总结(二)

1.首选项的存取数据 写一个类,里面放入存取方法,然后在外面进行调用 public class PrefsUtils { private static final String PREFS_NAME="com.yomoto.util.OtherPrefs"; //这里放入的名字存入的地址是:data/data/项目包名/shared_prefs/PREFS_NAME //得到首选项中的数据 public static String getValue(Context context,St

Android开发技巧——实现可复用的ActionSheet菜单

在上一篇<Android开发技巧--使用Dialog实现仿QQ的ActionSheet菜单>中,讲了这种菜单的实现过程,接下来将把它改成一个可复用的控件库. 本文原创,转载请注明出处: http://blog.csdn.net/maosidiaoxian/article/details/46324941 对于要实现的可复用的控件库,我需要它具备以下两点: 可添加远程依赖(不考虑Eclipse中的使用) 可灵活配置 分离库的实现代码 对于第一点,需要做的就是在Android Studio中新建一

Android 开发技巧总结

1.项目中设置每个activity的启动模式(如果堆栈中存在此activity就会重用,并提到栈顶,不会创建新的activity)  android:launchMode="singleTask" 2.如果界面中的布局被弹出的软键盘改变,则在对应的activity中加入如下代码即可. android:windowSoftInputMode="adjustPan|stateHidden" 3.去掉ScrollView拉倒边缘时的效果: scrollView.setOv

安卓开发技巧二:自定义日志工具类XLog的实现

我们在开发过程中,打印日志是必不可少的一个调试环节,然而,直接使用系统自带的Log日志类,并不能满足我们实际项目的需求:假如我们现在在开发一款比较大的项目,用到打印日志的地方肯定特别多,等到真正上线的时候,我们是不希望日志依旧能够打印出的,原因很简单,不仅多少有些影响效率,更有可能导致信息的泄露,所以我们就需要把所有的日志打印语句全部取消掉,难道我们真的一个一个的去删除这些打印日志的语句吗?项目那么大,就是想删除,也得耗费大量的时间和精力!大家不用怕,笔者这就给大家带来一款控制线上版本和线下版本

SQL开发技巧(二)

本系列文章旨在收集在开发过程中遇到的一些常用的SQL语句,然后整理归档,本系列文章基于SQLServer系列,且版本为SQLServer2005及以上…… 文章系列目录 SQL开发技巧(一) SQL开发技巧(二) 本文内容简介 这篇文章主要介绍以下内容: 快速查询表的总记录数 非递归查询树形结构表的所有子节点 清除查询缓存 编程中构建Where语句的小技巧 如何进行跨服务器的数据库查询 快速查询表的总记录数 什么,你还在用select count(*) from xxx?难道没有园友告诉你用se

Android 开发技巧总结(三)

1.在界面中按返回键判断某个控件的可见性,如果可见,则用动画让其消失,应用并不退出. Onkeydown方法中: if(keyCode == 4){ if(slidingMenu.getVisibility() == View.VISIBLE){ //退出的动画 AnimationSet animationSet = new AnimationSet(true); TranslateAnimation animation = new TranslateAnimation(0,-280, 0, 0

50个Android开发技巧(10 为TextView加入样式)

首先来看一个控件的例子: (原文地址:http://blog.csdn.net/vector_yi/article/details/24428085) 手机上类似这种场景你一定已经见过非常多次了,但有没有考虑过它是如何实现的? 或许你会觉得这是一个略微复杂的自己定义的View,但,没错,这实际上仅仅是一个原生的TextView而已. TextView是一个简单而奇妙的Widget,你能够利用它以不同风格不同格式来展现文字. 举两个简单的样例: 1.在TextView中加入一个超链接 事实上非常e