身份证号码大都是数字,但是极少数的最后一位是字母的。比如说,可能是X、Y、Z。
在xml里这样设置就可以了:
android:digits="1234567890XYZ"

但是我要默认的输入法为数字,怎么实现?


谢谢你的解答,解决了我的问题。
android:inputType="number"
android:digits="0123456789xyzXYZ"
同时设置这两个就可以了。



方法一:
// 输入框限制输入字数
editText.addTextChangedListener(new TextWatcher() {
private CharSequence temp;
private boolean isEdit = true;
private int selectionStart ;
private int selectionEnd ;
@Override
public void beforeTextChanged(CharSequence s, int arg1, int arg2,
int arg3) {
temp = s;
}

@Override
public void on

TextChanged(CharSequence s, int arg1, int arg2,
int arg3) {
}

@Override
public void afterTextChanged(Editable s) {
selectionStart = editText.getSelectionStart();
selectionEnd = editText.getSelectionEnd();
Log.i("gongbiao1",""+selectionStart);
if (temp.length() > Constant.TEXT_MAX) {
Toast.makeText(KaguHomeActivity.this,
R.string.edit_content_limit, Toast.LENGTH_SHORT)
.show();
s.delete(selectionStart-1, selectionEnd);
int tempSelection = selectionStart;
editText.setText(s);
editText.setSelection(tempSelection);
}
}


});


方法二:
利用EditText可以设置filter的特性,自定义一个LengthFilter,当输入字数超过限制时 ,做出自定义的提示
// 输入框限制输入字数
InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter.LengthFilter(Constant.TEXT_MAX) {
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
if (source.length() > 0 && dest.length() == Constant.TEXT_MAX) {
if ((System.currentTimeMillis() - toastTime) > interval) {
toastTime = System.currentTimeMillis();
Toast
.makeText(KaguHomeActivity.this,
R.string.edit_content_limit,
Toast.LENGTH_SHORT).show();
}
}
if (dest.toString().equals(
getResources().getString(R.string.input_default_txt))) {
Bundle data = new Bundle();
data.putCharSequence("source", source);
Message message = textHandler.obtainMessage();
message.setData(data);
message.sendToTarget();
}

return super.filter(source, start, end, dest, dstart, dend);
}
};
editText.setFilters(filters);
private Handler textHandler = new Handler() {
@Override
public void handleMessage(Message msg) {

Bundle data = msg.getData();
CharSequence source = data.getCharSequence("source");
editText.setTextColor(Color.BLACK);
editText.setText(source);
editText.setSelection(source.length());
}
};

===========简单方法=====

TextViewtv=newTextView(this);
intmaxLength=10;
InputFilter[]fArray=newInputFilter[1];
fArray
[0]=newInputFilter.LengthFilter(maxLength);
tv
.setFilters(fArray)
3.如果这时候你还想告诉别人 字数达到最大限度了 想弹出对话框,可是这时候因为有输入法不能弹出 所有要取消输入法然后才能谭 因此需要去掉输入法

InputMethodManagerimm=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm
.hideSoftInputFromWindow(editTextField.getWindowToken(),0);

你或许想用editText的OnKeyListener事件,可是当一个单词没有写完的话 还是不能响应这个事件不符合字数

所有只有先取消掉输入法。







EditText的layout设置大家都知道就不累赘了,这里主要说怎么设置输入限制。

EditText的属性里面已经封装好了相关的设置,上一篇文章里面也提到了,不熟悉的可以去查看上一篇EditText属性大全,这里着重讲输入限制的属性:

android:digits="1234567890.+-*/%\n()"
限制输入框中只能输入自己定义的这些字符串 如果输入其它将不予以显示
android:phoneNumber="true"
限制输入框中只能输入手机号码
android:password="true"
限制输入框中输入的任何内容将以"*"符号来显示
android:hint="默认文字"
输入内容前默认显示在输入框中的文字
android:textColorHint="#FF0000"
设置文字内容颜色
android:enabled=


更多相关文章

  1. android监听软键盘+吐槽!
  2. Android输入子系统之InputReader读取键盘消息过程分析
  3. android UI进阶之弹窗的使用(2)--实现通讯录的弹窗效果
  4. android布局中的基本属性:
  5. Delphi XE5 for Android(安卓)(十一)
  6. android切换屏幕时的生命周期
  7. android 模拟器命令 附:模拟器不能联网设置
  8. Android控件_ProgressBar使用
  9. Android(安卓)搜索框:SearchView 的属性和用法详解

随机推荐

  1. android spinner下拉选择框
  2. Android(安卓)Spinner控件之键值对用法
  3. Android(安卓)应用退出的几种方法
  4. OpenFrameworks + kinect + Android项目
  5. android中的Sqlite数据库操作
  6. Android(安卓)Studio问题之dexDebug
  7. Android调用WCF
  8. Android——CheckBox【复选框】 点击事件
  9. android Studio 低版本升级gradle3.0以上
  10. Android(安卓)模拟MotionEvent事件 触发