点击EditText 弹出日期选择器DatePickerDialog
来源:互联网 发布:知乎专栏在哪里 编辑:程序博客网 时间:2024/05/16 17:46
转载请标明出处:http://blog.csdn.net/xx326664162/article/details/53436123 文章出自:薛瑄的博客
在一些需要注册的项目中我们可能需要用户填写生日等其他的日期格式的数据,这时候选择DatePickerDialog无疑是比较好的选择。在用户点击输入框或者输入框获得焦点的时候弹出来DatePickerDialog,用户点击设定按钮,将日期填写到输入框。
示例代码
<EditText android:id="@+id/Birthday" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="30dip" android:layout_marginRight="30dip" android:inputType="none"//不显示系统输入键盘 android:layout_weight="1" > </EditText>
下面分别为EditText控件设置了两种监听事件,setOnClickListener()和setOnFocusChangeListener(),如果不设置setOnFocusChangeListener()需要点击两次EditText控件,第一次获得焦点,第二次点击才会触发setOnClickListener()。所以为了点击一次就能弹出日期选择框,需要设置setOnFocusChangeListener()
birthday = (EditText)findViewById(R.id.Birthday); birthday.setInputType(InputType.TYPE_NULL); //不显示系统输入键盘</span> birthday.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { // TODO Auto-generated method stub if(hasFocus){ showDatePickerDialog(); } } }); birthday.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub showDatePickerDialog(); } }); /** * 展示日期选择对话框 */ private void showDatePickerDialog() { Calendar c = Calendar.getInstance(); new DatePickerDialog(RecognizeRecordActivity.this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // TODO Auto-generated method stub birthday.setText(year+"/"+(monthOfYear+1)+"/"+dayOfMonth); } }, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH)).show(); }
防止EditText控件自动聚焦
为了防止,进入界面EditText控件自动聚焦,导致弹出日期选择器,需要在EditText控件所在的LinearLayout中添加如下代码:
android:focusable="true" android:focusableInTouchMode="true"
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);
方法三
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的设置还是要让他显示滴 } }});
参考:
android 点击EditText 弹出日期选择器DatePickerDialog
Android手机开发:EditText+DatePicker带日期选择器的编辑框
关于android:focusable属性
- android 点击EditText 弹出日期选择器DatePickerDialog
- 点击EditText 弹出日期选择器DatePickerDialog
- DatepickerDialog日期选择器
- 日期选择器DatePickerDialog
- 日期选择器DatePickerDialog简化使用
- DatePickerDialog\TimePickerDialog日期时间选择器
- DatePickerDialog日期选择器的使用
- 使用DatePickerDialog制作日期选择器
- 使用DatePickerDialog制作日期选择器
- Android_日期选择器DatePickerDialog、时间选择器TimePickerDialog
- android 实现点击输入框弹出日期选择对话框(DatePickerDialog)
- Android日期选择器DatePickerDialog的使用
- Android 日期选择器 DatePickerDialog 修改主题颜色
- Android原生日期选择器对话框DatePickerDialog
- 安卓点击EditText,弹出日期选择界面,选择日期,返回给EditText
- 安卓点击EditText,弹出日期选择界面,选择日期,返回给EditText
- 时间选择器和日期选择器 对话框 TimePickerDialog DatePickerDialog
- android点击出现日期选择DatePickerDialog,并获取日期
- Bootstrap3中相关插件的yingyong
- 第十四周项目一数组大折腾(3)创建一个长度为16的整形数组a并初始化,先输出数组中元素值为3的倍数的数,再输出所有下标为3的倍数的元素值
- 直播 点播服务视频流媒体方案简析
- sql查询表中字段值相同的数据记录
- 远离百毒推广的3个方法
- 点击EditText 弹出日期选择器DatePickerDialog
- 如何确认M版本上Multi-user的配置是否ok
- Intent的用法——活动之间跳转
- 20万大奖等你拿!阿里聚安全攻防挑战赛报名开启!
- 初级程序员 - List.contains()的问题
- 报表导出excel方式介绍
- .net路由
- 第十四周 OJ总结<3>--求3×3矩阵对角线元素之和
- Parcelable接口使用