Android开发UI之EditText+DatePicker带日期选择器的编辑框
1. 声明EditText变量,并关联到相应控件上
private EditText sellStartTime;
private EditText sellEndTime;
sellStartTime = (EditText)findViewById(R.id.editSellStartTime);
sellEndTime = (EditText)findViewById(R.id.editSellEndTime);
2. 日期选择器函数
private DatePickerDialog.OnDateSetListener mDateSetListener =
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
mYear = year;
String mm;
String dd;
if(monthOfYear<=9)
{
mMonth = monthOfYear+1;
mm="0"+mMonth;
}
else{
mMonth = monthOfYear+1;
mm=String.valueOf(mMonth);
}
if(dayOfMonth<=9)
{
mDay = dayOfMonth;
dd="0"+mDay;
}
else{
mDay = dayOfMonth;
dd=String.valueOf(mDay);
}
mDay = dayOfMonth;
if(timeFlag == 0) {
sellStartTime.setText(String.valueOf(mYear)+"-"+mm+"-"+dd);
}else {
sellEndTime.setText(String.valueOf(mYear)+"-"+mm+"-"+dd);
}
}
}; protected Dialog onCreateDialog(int id) {
switch (id) {
case 0:
return new DatePickerDialog(this,
mDateSetListener,
mYear, mMonth, mDay);
case 1:
return new DatePickerDialog(this,
mDateSetListener,
mYear, mMonth, mDay);
}
return null;
} // 隐藏手机键盘
private void hideIM(View edt){
try {
InputMethodManager im = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
IBinder windowToken = edt.getWindowToken();
if(windowToken != null) {
im.hideSoftInputFromWindow(windowToken, 0);
}
} catch (Exception e) { }
}
3. 注册监听器,当EditText获得焦点时,或者被点击时,打开日期选择器
sellStartTime.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
timeFlag = 0;
showDialog(0);
}
});
sellEndTime.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
timeFlag = 1;
showDialog(1);
}
});
sellStartTime.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus == true) {
timeFlag = 0;
hideIM(v);
showDialog(0);
}
}
}); sellEndTime.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus == true) {
timeFlag = 1;
hideIM(v);
showDialog(1);
}
}
});
4. 在包含EditText的LinearLayout中,添加语句
android:focusable="true" android:focusableInTouchMode="true"
这句话,是为了防止EditText自动获取焦点,触发日期选择器。
EditText如何关闭软键盘
方法一:
在AndroidMainfest.xml中选择哪个activity,设置windowSoftInputMode属性为adjustUnspecified|stateHidden
例如:<activity android:name=".Main"
android:label="@string/app_name"
android:windowSoftInputMode="adjustUnspecified|stateHidden"
android:configChanges="orientation|keyboardHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
方法二:
强制隐藏Android输入法窗口
例如:EditText edit=(EditText)findViewById(R.id.edit);
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edit.getWindowToken(),0);
2.EditText始终不弹出软件键盘
例:EditText edit=(EditText)findViewById(R.id.edit);
edit.setInputType(InputType.TYPE_NULL);
还有一个问题是怎样才能不让实体键盘也输入呢,解决方法
Android用代码实现EditText不可编辑
editText.setFilters(new InputFilter[] { new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start,
int end, Spanned dest, int dstart, int dend) {
return source.length() < 1 ? dest.subSequence(dstart, dend) : "";
}
}
}); 但是这样连DatePicker的设置也不能显示到EditText里了,改一改
//实现EditText不可编辑
birthEdit.setFilters(new InputFilter[]{new InputFilter(){
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
showDialog(HmConst.DIALOG_DATEPICKER);//不管按什么键都让DatePicker出现
return source.length() == 1 ? "" : source; //DatePicker的设置还是要让他显示滴
}
}});
我的实验代码,可行
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
birthEdit =(EditText)findViewById(R.id.birthEdit);
makeDateEdit();
}
/**
* 将EditText变成一个日期选择器
*/
public void makeDateEdit(){
//隐藏EditText键盘
birthEdit.setInputType(InputType.TYPE_NULL);
//点击显示DatePickerDialog
birthEdit.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showDialog(HmConst.DIALOG_DATEPICKER);
}
});
//实现EditText不可编辑
birthEdit.setFilters(new InputFilter[]{new InputFilter(){
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
showDialog(HmConst.DIALOG_DATEPICKER);//不管按什么键都让DatePicker出现
return source.length() == 1 ? "" : source;
}
}});
//屏蔽实体键盘delete键
birthEdit.setOnKeyListener(new OnKeyListener(){
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_DEL) {
showDialog(HmConst.DIALOG_DATEPICKER);//delete键都让DatePicker出现
return true;//返回真就会屏蔽delete键的原效果
}
return false;
}
});
//设置时间选择器的监听器
mDateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
mYear = year;
String mm;
String dd;
mMonth = monthOfYear+1; //因为month是从0开始计数的
if(mMonth<=9)
{
mm="0"+mMonth;
}
else{
mm=String.valueOf(mMonth);
}
mDay = dayOfMonth;
if(mDay<=9)
{
dd="0"+mDay;
}
else{
dd=String.valueOf(mDay);
}
mDay = dayOfMonth;
//将选择的时间显示在EditText上
birthEdit.setText(String.valueOf(mYear)+"-"+mm+"-"+dd);
}
};
}
@Override
protected Dialog onCreateDialog(int id) {
// TODO Auto-generated method stub
switch(id){
case HmConst.DIALOG_DATEPICKER:
return new DatePickerDialog(this,mDateSetListener,2010,11,25);
default:
return null;
}
}
Android开发UI之EditText+DatePicker带日期选择器的编辑框的更多相关文章
- 安卓开发_浅谈DatePicker(日期选择器)
DatePicker继承自FrameLayout类,日期选择控件的主要功能是向用户提供包含年.月.日的日期数据并允许用户对其修改.如果要捕获用户修改日期选择控件中的数据事件,需要为DatePicker ...
- Android开发--UI之Bundle的使用
Android开发–UI之Bundle的使用 最近,把之前学过的东西大体的整理了以下,并且想把学过的心得分享给大家.我自己做了一个小小的demo,以便说明具体的应用. 这里的两个界面是通过第一个界面输 ...
- Android开发 UI布局
Android开发 UI布局一.线性布局LinearLayout 什么是线性布局? 其实呢,线性布局就是把所有的孩子摆在同一条线上 <?xml version="1.0" e ...
- Android开发UI之开源项目第一篇——个性化控件(View)篇
原文:http://blog.csdn.net/java886o/article/details/24355907 本文为那些不错的Android开源项目第一篇——个性化控件(View)篇,主要介绍A ...
- Android开发之输入框EditText介绍
这篇文章主要为大家详细介绍了Android布局之输入框EditText设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 现在先简单介绍一下技术点: 1.如何使用圆角输入框和按钮背景 2.如何实现 ...
- Android学习之Image操作及时间日期选择器
一.基础学习 1.ImageView是图片容器,就相当于RadioGroup是RadioButton的容器一样,是View的直接子类. 1: <ImageView 2: android:id=& ...
- mpvue开发微信小程序之时间+日期选择器
最近在做微信小程序,技术栈为mpvue+iview weapp组件库. 因项目需求,要用到日期+时间选择器,iview组件库目前还未提供时间日期选择器的组件,小程序官方组件日期时间也是分开的,在简书上 ...
- Android 开发之拦截EditText的输入内容,定制输入内容
1.EditText作为一个比较成熟的View,在Android的应用开发中得到极为广泛的使用.在某些特殊情况下,我们可能需要定制EditText的输入内容, 只允许指定功能的输入,例如输入一个”dd ...
- Android开发UI之Toast的使用
Toast,A toast provides simple feedback about an operation in a small popup. 对于操作提供一个简单反馈信息. 官网链接:htt ...
随机推荐
- DTCMS获取栏目子类
<%set DataTable categoryList=get_category_child_list(channel,0)%> <%foreach(DataRow cdr in ...
- Java语法糖
1.创建数组:String[] s = new String[]{"1","2","3"};//这种方法可以在不指定数组元素数量的情况下生成 ...
- Beaglebone Back学习四(GPIO实验)
GPIO Beaglebone Back开发板引出了92个引脚,其中只有65个GPIO口可通过配置使用,由于引脚具有“复用”的特性,大约每个引脚有8种工作模式(Beagle System Refere ...
- C# 类中隐藏基类方法和Partial
今天对于.NET开发人员来说最开心的事情莫过于微软搞开源了,这觉得是给搞.NET开发的长脸.虽然我是一个初学者,这无疑给我极大的学习动力.Fighting!!! 当一个类从父类继承了一个成员时,也就继 ...
- css3 旋转效果加上双面显示效果
在学习Css3的过程中,我想做一个类似金字塔,菱形翻页效果,如图这种效果 如是,我自己设计了一个,不带js的旋转效果: 1>第一步我先设计了一个方块,内含一个旋转了45deg的小方块,代码如下: ...
- 【 Quartz】使用 JobListener (任务监听器可实现) 我想在一个任务执行后在执行第二个任务怎么办呢
http://liuzidong.iteye.com/blog/1147528 Quartz之JobExecutionException 博客分类: Java Quartz quartzjobexec ...
- 内置对象之Cookie
if (!this.IsPostBack) { try { HttpCookie MyCookie = new HttpCookie("MyCookie"); MyCookie.V ...
- DB天气app冲刺第十天
好了 这是第十天了,按照白板任务上的来说的话,今天没有完成,所以等一下还要继续看看今天能不能把他做完,今天出的问题在于我又自己调整了一下UI设计,因为发现以前的设计发面有重复,浪费了屏幕.所以还不如省 ...
- poj City Horizon (线段树+二分离散)
http://poj.org/problem?id=3277 City Horizon Time Limit: 2000MS Memory Limit: 65536K Total Submissi ...
- php如何查找会员无限分类的所有上级和所有下级
a推广出的a-1,a-2继续推广,得到a-1-1,a-1-2等等数据库设计思路如下:用户表中有一个son这么一个字段,这个字段中存放名下所有会员的id,用分号隔开.这个字段的维护:比如a-1-1推广出 ...