Android下edittext限制文本指定位置数字不能超出多少
2017-12-26 13:47
387 查看
开发中需要做一个时间输入,但是时间不能超出23:59分
逻辑分析:
第一位和第二位是小时。第一位只能为0、1、2
而且小时必须小于24
第三位和第四位是分钟 不能超出59
只需要现在第三位不大于5即可实现控制
et_visit_time.setText调用此方法后,光标会自动定位到最前面,需要下面的处理
et_visit_time.setSelection(beforlen);此方法可以让光标移到最后的输入位置
下面是XML片段
我使用的方法显示的是1230代表了12:30,如果需要加冒号可以自行在代码中添加即可,此方法使用于数字限制,数字约定等的实现,如果有什么实际需求还是根据实际需求做修改
逻辑分析:
第一位和第二位是小时。第一位只能为0、1、2
而且小时必须小于24
第三位和第四位是分钟 不能超出59
只需要现在第三位不大于5即可实现控制
et_visit_time.addTextChangedListener(new TextWatcher() {//设置时间输入限制,对时间做一个限制 private int beforlen = 0; @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub if (s.equals("")) { return; } LogUtil.log(tag, "afterTextChanged" + s); if (s.length() > beforlen) {// 根据位数判断增加的数字 // LogUtil.log(tag, "增加"); if (s.length() == 1) {// 第一位 if ((Integer.valueOf(s.toString()) > 2)) { et_visit_time.setText(""); } else { beforlen = s.length(); } } else if (s.length() == 2) { if ((Integer.valueOf(s.toString()) > 23)) { et_visit_time.setText(s.subSequence(0, 1)); } else { beforlen = s.length(); } } else if (s.length() == 3) { String min = s.subSequence(2, 3).toString(); LogUtil.log(tag, "fe" + min); if ((Integer.valueOf(min) > 5)) { et_visit_time.setText(s.subSequence(0, 2)); } else { beforlen = s.length(); } } else if (s.length() == 4) { beforlen = s.length(); } } else { // LogUtil.log(tag, "删减"); beforlen = s.length(); et_visit_time.setSelection(beforlen); } } });
et_visit_time.setText调用此方法后,光标会自动定位到最前面,需要下面的处理
et_visit_time.setSelection(beforlen);此方法可以让光标移到最后的输入位置
下面是XML片段
<EditText android:id="@+id/ed_visit_time_id" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:gravity="bottom" android:imeOptions="actionNext" android:inputType="number" android:maxLength="4" android:singleLine="true" android:textSize="18sp" />
我使用的方法显示的是1230代表了12:30,如果需要加冒号可以自行在代码中添加即可,此方法使用于数字限制,数字约定等的实现,如果有什么实际需求还是根据实际需求做修改
相关文章推荐
- android edittext限制输入小数位数,限制输入数字大小
- Android 限制EditText只能输入数字、限制输入类型、限制输入长度的小技巧
- android EditText输入限制,只输入数字电话或者特殊字符
- Android开发中EditText设置/隐藏光标位置、选中文本和获取/清除焦点
- Android EditText 限制输入数字和字母设置
- android EditText输入限制,只输入数字电话或者特殊字符
- Android:限制EditText中只可以输入字母和数字
- Android - 小功能 - EditText设置/隐藏光标位置、选中文本和获取/清除焦点
- android小知识之EditText输入框之值监控以及类型限制(数字,英语字母,下划线,是否为星号密码)
- Android 解决TableRow中TextView或Edittext超出屏幕,不能自动换行或换行问题
- Android EditText输入限制最大字符长度 和 限制只能输入数字和字母(包含大小写)
- Android 中在EditText中设置输入限制,使输入字符只可以为数字。
- android EditText文本限制输入行数,多余部分显示省略号
- Android中EditText限制仅允许输入汉字/仅允许汉字和数字
- android EditText输入限制,只输入数字电话或者特殊字符
- Android--Android教程]EditText设置/隐藏光标位置、选中文本和获取/清除焦点
- Android EditText 不能输入 手机输入法自带 Emoji 表情,为EditText 添加输入限制
- android edittext限制输入小数位数,限制输入数字大小
- Android 限制EditText仅仅能输入数字、限制输入类型、限制输入长度的小技巧
- Android EditText多行文本输入 字数统计 限制数量