android Edittext自定义输入字符和类型

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可以叠加使用。

posted @ 2013-11-14 11:41  带狗狗带  Views(832)  Comments(0Edit  收藏  举报