android - 如何在android的edittext中使第一个字符为数字,第二个字符为字母?
问题描述
我想让第一个字符为数字,第二个字符为字母。我试过这样,但它完全不允许字母。
public static InputFilter[] myfilter=new InputFilter[]{
new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
for (int i=start;i<end;i++){
if (!Character.isDigit(source.charAt(0))){
return "";
}
}
return null;
}
}
};
//////
edittext1.setFilters(myfilter);
我想让第一个字符只有数字,第二个字符只有字母。我怎样才能做到这一点?
解决方案
为什么不添加一个 TextWatcher 并为输入添加约束?
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if(charSequence.length() == 1 && !Character.isDigit(charSequence.charAt(0))){
editText.setText("");
}
if(charSequence.length() == 2 && !Character.isAlphabetic(charSequence.charAt(1))){
editText.setText(editText.getText().subSequence(0,1));
editText.setSelection(editText.getText().length());
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
推荐阅读
- wordpress - 当产品保存在 WooCommerce 后端时,以编程方式为库存状态分配标签
- flutter-getx - 在渲染之前更新 getx 控制器中的值
- excel - 有没有办法自动扩展数据透视表的数据透视表范围?
- node.js - updateOne() 找到匹配项后从 MongoDB 获取现有文档的 _id?节点.js
- python - 结合 Spark Data Frames 实现代码的更有效方式
- selenium - Selenium WebDriver 中的列表框向上或向下滚动
- javascript - 显示来自 Swapi API 但接收 [object Promise] 的电影
- javascript - 按作为字符串日期的键对对象键值对进行排序
- javascript - 我有一个带有图标和文本的按钮,我尝试将它们分组,这样图标就不能单独点击
- vue.js - Vue/Vuex 保留以前用户的数据