美文网首页自定义viewAndroid知识Android开发
Android自定义view——PasswordInputEdt

Android自定义view——PasswordInputEdt

作者: 超神的菠萝 | 来源:发表于2017-04-28 17:16 被阅读2832次

    效果图

    ScreenGif.gif

    使用

    在根目录的build.gradle中添加

    allprojects {
            repositories {
                ...
                maven { url 'https://jitpack.io' }
            }
        }
    

    在项目的build.gradle中添加

     compile 'com.github.superSp:PasswordInputEdt:v1.0'
    

    在布局中添加

     <lsp.com.lib.PasswordInputEdt
            android:id="@+id/edt"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    

    在Activity中使用

    edt = (PasswordInputEdt) findViewById(R.id.edt);
    edt.setOnInputOverListener(new PasswordInputEdt.onInputOverListener() {
          @Override
          public void onInputOver(String text) {
              Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT).show();
          }
    });
    

    可以自定义的属性(xml和代码都可以设置)

        <attr name="numLength" format="integer" />              <!-- 输入位数的长度-->
        <attr name="isPwd" format="boolean" />                  <!-- 是否显示为密码-->
        <attr name="autoCloseKeyBoard" format="boolean" />      <!-- 输入完成后是否自动关闭键盘-->
        <attr name="isNumber" format="boolean" />               <!-- 是否只能输入数字-->
        <attr name="widthSpace" format="dimension" />           <!-- 框框之间的横向间隙-->
        <attr name="heightSpace" format="dimension" />          <!-- 框框之间的纵向间隙-->
        <attr name="rectStroke" format="dimension" />           <!-- 框框的宽度-->
        <attr name="txtSize" format="dimension" />              <!-- 字体的大小-->
        <attr name="circleRadius" format="dimension" />         <!-- 密码格式中圆形的半径-->
        <attr name="bgFill" format="boolean" />                 <!-- 框框是否附带背景-->
        <attr name="textColor" format="color" />                <!-- 字体的颜色-->
        <attr name="rectNormalColor" format="color" />          <!-- 框框没选中时候默认的颜色-->
        <attr name="rectChooseColor" format="color" />          <!-- 框框选中时候默认的颜色-->
        <attr name="pwdType" format="enum" >                    <!-- 密码的类型:圆或者*号-->
            <enum name="CIRCLE" value="0"/>
            <enum name="XINGHAO" value="1"/>
        </attr>
    

    查看源码github地址

    相关文章

      网友评论

      • 开包辣条压压惊_bda1:拜读了一下大神的代码,加了点理解注释,不知道对不对:
        // 1.输字母会触发EditText的onTextChanged事件,也会自己触发重绘制,不需要这段代码
        // 2.但是删除,由于原本的EditText字符被清了,所以点键盘删除键不会自己触发重绘,需要自己手动调。
        // 3.点击正常的数字字母键不用调用这个方法,但是Delete等功能键会调用这个方法
        // 4.Backspace(回退) -->67 Delete(删除)-->112
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
        UIUtils.showToastSafe(keyCode + "");
        if ((keyCode == 67 || keyCode == 112) && text.length() != 0) {
        /**
        * public String substring(int beginIndex, int endIndex)
        * 返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符
        */
        text = text.substring(0, text.length()-1); //字符减少一个
        invalidate();
        }
        return super.onKeyDown(keyCode, event);
        }
        超神的菠萝:@开包辣条压压惊_bda1 按道理来说只要是文本内容有改动都会出发重绘,删除和输入都会触发,onKeydown方法点击键盘就会触发。。4指的应该就是那两个按键的码。。在回家路上代码好久没看过有点忘了,等假期完了再回去看看:+1:
      • 8b5dec43c39f:请问有没有清空的方法啊
        8b5dec43c39f:@超神的菠萝 我把源码下载下来自己加了,你的代码写的很好:smile:
        超神的菠萝:额。。还没加。。准备等不忙的时候升级一个版本加一下。。不好意思:sob:
      • 4b7e2b778d82:你好,请问我想隐藏系统自带的软键盘,网上说的方法怎么都隐藏不了呢。
        我是自己写了一个数字的输入键盘,不需要系统的键盘。
        谢谢
      • b59ec977eef4:没有清空的方法吗?
        超神的菠萝:额。。。好像没考虑到清空。。如果你需要的话 改天我可以加一下。。

      本文标题:Android自定义view——PasswordInputEdt

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