美文网首页Android开发常用代码Android知识Android进阶之旅
Android 输入框第一次弹出数字键盘, 后面可以随意切换

Android 输入框第一次弹出数字键盘, 后面可以随意切换

作者: code小生 | 来源:发表于2017-04-15 14:00 被阅读1218次

    转载请注明出处
    http://www.jianshu.com/p/1932ff1b78de

    前言

    记录一次关于 EditText 首次输入需要弹出数字键盘,然后可以随便切换输入模式,下面以 输入身份证号 为例,因为身份证号只可能是数字 + 字母 X,所以这里不仅做了首次弹出数字键盘,还实现了对于其他键盘模式输入做了限制,只能输入字母 X 。

    代码

    xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.mu_16jj.edittextinputtypedemo.MainActivity">
    
        <EditText
            android:id="@+id/et_main"
            android:layout_width="300dp"
            android:layout_height="45dp"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="25dp"
            android:background="@drawable/sh_et_blue_bg"
            android:gravity="center_vertical"
            android:hint="第一次打开键盘为数字键盘"
            android:paddingLeft="5dp"
            android:textColor="@android:color/black" />
    
    </RelativeLayout>
    

    这里没什么可解释的,就一个输入框,需要注意:这里并没有指定输入类型

    java

    private void initView() {
            setContentView(R.layout.activity_main);
            editText = (EditText) findViewById(R.id.et_main);
    
            editText.setKeyListener(listener);
        }
    
        KeyListener listener = new NumberKeyListener() {
    
            /**
             * @return :返回哪些希望可以被输入的字符,默认不允许输入
             */
            @Override
            protected char[] getAcceptedChars() {
                char[] chars = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'X'};
                return chars;
    //            return new char[0];
            }
    
            /**
             * 0:无键盘,键盘弹不出来
             * 1:英文键盘
             * 2:模拟键盘
             * 3:数字键盘
             *
             * @return
             */
            @Override
            public int getInputType() {
                return 3;
            }
        };
    

    这就是核心代码了,主要就是监听,方法的返回值都做了详细的注释说明。在上面代码的情况下,真机运行效果,数字可以随便输入,字母是可以输入大写的 X,其他字符均输入不了。


    每天推送技术+干货

    相关文章

      网友评论

      • 黑白咖:签到
      • LiYang723:想要先显示数字键盘,布局文件中加上这两句就行了,还用代码设置啊
        android:inputType="number"
        android:digits="0123456789xX"
      • js_zhiqiang:这样不能任意切换,大牛
        code小生: @路人_041e 可以切换,到不允许输入中文
        路人_041e:不能切换中文输入
        code小生: @努力才幸福1 ??

      本文标题:Android 输入框第一次弹出数字键盘, 后面可以随意切换

      本文链接:https://www.haomeiwen.com/subject/navnattx.html