android提供了两种方式
一种是setInputType
一种是setKeyListener
直接上代码,有注释
import android.app.Activity; import android.os.Bundle; import android.text.InputFilter; import android.text.method.NumberKeyListener; import android.widget.EditText; /** * @author xirtam * @qq 751348449 */ public class MainActivity extends Activity { private EditText et; public static final int TYPE_1 = -1;// 为了避免和android自带的冲突使用-1 public static final String TYPE_1_String = "1234567890Xx";// 限制只能输入此字符串中的字符 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et = (EditText) findViewById(R.id.et); // et.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL| // InputType.TYPE_CLASS_NUMBER);//浮点数 // et.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);//邮箱 // et.setInputType(InputType.TYPE_CLASS_PHONE);//电话号 // 一下两行就实现了限制输入身份证号 this.setMaxLength(18); et.setKeyListener(new myInputListener(TYPE_1, TYPE_1_String)); } /** * 自定义输入监听器 * * @author xirtam */ private class myInputListener extends NumberKeyListener { private int type; private String chars; public myInputListener(int type, String chars) { this.type = type; this.chars = chars; } @Override public int getInputType() { return type; } @Override protected char[] getAcceptedChars() { return chars.toCharArray(); } } /** * 设置可输入最大长度 * * @param len * 长度 */ public void setMaxLength(int len) { et.setFilters(new InputFilter[] { new InputFilter.LengthFilter(len) }); } }
布局文件里只有一个Edittext ,id为et,就不上传了。
注意setInputType和setKeyListener可以叠加使用。