zoukankan      html  css  js  c++  java
  • 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可以叠加使用。

  • 相关阅读:
    关于在MyEclipse中页面中文乱码的问题
    如何用Navicat for MySQL 将mysql中的数据库导出,导入。
    淘宝链接池的配置
    c3p0配置
    人生规划
    spring问题: Unable to validate using XSD: Your JAXP provider
    List数组和Set集合
    Tomcat6内存不足问题及解决方法
    清华校长送给毕业生的五句话
    个人图文理解类的封装
  • 原文地址:https://www.cnblogs.com/xirtam/p/3422991.html
Copyright © 2011-2022 走看看