• Android中EditText的密码显示与隐藏



    首先来看看文章介绍的显示效果
    在这里插入图片描述
    在这里插入图片描述

    代码展示

    方法一:修改TransformationMethod

    布局文件

    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toLeftOf="@+id/editText_loginUsername"
            android:layout_alignBaseline="@+id/editText_loginUsername"
            android:textSize="@dimen/textSize20"
    
            android:text="账号 : "/>
    
        <EditText
            android:id="@+id/editText_loginUsername"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:layout_below="@+id/imageView"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="60dp"
            android:gravity="center"
            android:hint="输入字母开头的账号"
            android:inputType="textPersonName"
            android:textSize="@dimen/textSize20" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="密码 : "
            android:textSize="@dimen/textSize20"
            android:layout_toLeftOf="@+id/editText_loginPassword"
            android:layout_alignBaseline="@+id/editText_loginPassword"/>
    
        <EditText
            android:id="@+id/editText_loginPassword"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:layout_below="@+id/editText_loginUsername"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="25dp"
            android:gravity="center"
            android:hint="输入密码"
            android:inputType="textPassword"
            android:textSize="@dimen/textSize20" />
    
        <CheckBox
            android:id="@+id/Password_show"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/editText_loginPassword"
            android:layout_toRightOf="@+id/editText_loginPassword"
            android:textSize="10dp"
            android:text="显示密码" />
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48

    Activity文件

    etUsername=findViewById(R.id.editText_loginUsername);
            etPassword=findViewById(R.id.editText_loginPassword);
            /**
             * 密码的显示隐藏
             */
            Password_show_CB=findViewById(R.id.Password_show);
            Password_show_CB.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                    // TODO Auto-generated method stub
                    if(b){
                        //如果选中,显示密码
                        etPassword.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
                    }else{
                        //否则隐藏密码
                        etPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());
                    }
                }
            });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    方法二:修改InputType

    这种方式有个问题就是密码的显示隐藏状态改变时字间距会变化,大家可以试一下。还是推荐用上面的方式。

    显示密码:

    etPassword.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
    
    • 1

    隐藏密码:

    mETPassword.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
    
    • 1

    EditText属性大全

    Android:layout_gravity=“center_vertical”//设置控件显示的位置:默认top,这里居中显示,还有bottom
    android:hint=“请输入数字!”//设置显示在空间上的提示信息
    android:numeric=“integer”//设置只能输入整数,如果是小数则是:decimal
    android:singleLine=“true”//设置单行输入,一旦设置为true,则文字不会自动换行。

     android:gray="top" //多行中指针在第一行第一位置
    
    • 1

    et.setSelection(et.length());//调整光标到最后一行
    Android:autoText //自动拼写帮助
    Android:capitalize //首字母大写
    Android:digits //设置只接受某些数字
    Android:singleLine //是否单行或者多行,回车是离开文本框还是文本框增加新行
    Android:numeric //只接受数字
    Android:password //密码
    Android:phoneNumber // 输入电话号码
    Android:editable //是否可编辑
    Android:autoLink=”all” //设置文本超链接样式当点击网址时,跳向该网址
    android:password=“true”//设置只能输入密码
    android:textColor = “#ff8c00”//字体颜色
    android:textStyle=“bold”//字体,bold, italic, bolditalic
    android:textSize=“20dip”//大小
    android:capitalize = “characters”//以大写字母写
    android:textAlign=“center”//EditText没有这个属性,但TextView有
    android:textColorHighlight=“#cccccc”//被选中文字的底色,默认为蓝色
    android:textColorHint=“#ffff00”//设置提示信息文字的颜色,默认为灰色
    android:textScaleX=“1.5”//控制字与字之间的间距
    android:typeface=“monospace”//字型,normal, sans, serif, monospace
    android:background=“@null”//空间背景,这里没有,指透明
    android:layout_weight=“1”//权重 在控制控 件显示的大小时蛮有用的。
    android:textAppearance=“?android:attr/textAppearanceLargeInverse”//文字外观,这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。不知道这样理解对不对?

    属性名称描述
      android:autoLink设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all)
      android:autoText如果设置,将自动执行输入值的拼写纠正。此处无效果,在显示输入法并输入的时候起作用。
      android:bufferType指定getText()方式取得的文本类别。选项editable 类似于StringBuilder可追加字符,
      也就是说getText后可调用append方法设置文本内容。spannable 则可在给定的字符区域使用样式,参见这里1、这里2。
      android:capitalize设置英文字母大写类型。此处无效果,需要弹出输入法才能看得到,参见EditView此属性说明。
      android:cursorVisible设定光标为显示/隐藏,默认显示。
      android:digits设置允许输入哪些字符。如“1234567890.±*/% ()”
      android:drawableBottom在text的下方输出一个drawable,如图片。如果指定一个颜色的话会把text的背景设为该颜色,并且同时和background使用时覆盖后者。
      android:drawableLeft在text的左边输出一个drawable,如图片。
      android:drawablePadding设置text与drawable(图片)的间隔,与drawableLeft、drawableRight、drawableTop、drawableBottom一起使用,可设置为负数,单独使用没有效果。

    android:drawableRight在text的右边输出一个drawable,如图片。
      android:drawableTop在text的正上方输出一个drawable,如图片。
      android:editable设置是否可编辑。这里无效果,参见EditView。
      android:editorExtras设置文本的额外的输入数据。在EditView再讨论。
      android:ellipsize设置当文字过长时,该控件该如何显示。有如下值设置:”start”—?省略号显示在开头;”end”——省略号显示在结尾;”middle”—-省略号显示在中间;”marquee” ——以跑马灯的方式显示(动画横向移动)
      android:freezesText设置保存文本的内容以及光标的位置。参见:这里。
      android:gravity设置文本位置,如设置成“center”,文本将居中显示。
      android:hintText为空时显示的文字提示信息,可通过textColorHint设置提示信息的颜色。此属性在EditView中使用,但是这里也可以用。
      android:imeOptions附加功能,设置右下角IME动作与编辑框相关的动作,如actionDone右下角将显示一个“完成”,而不设置默认是一个回车符号。这个在EditView中再详细说明,此处无用。
      android:imeActionId设置IME动作ID。在EditView再做说明,可以先看这篇帖子:这里。
      android:imeActionLabel设置IME动作标签。在EditView再做说明。
      android:includeFontPadding设置文本是否包含顶部和底部额外空白,默认为true。
      android:inputMethod为文本指定输入法,需要完全限定名(完整的包名)。例如:com.google.android.inputmethod.pinyin,但是这里报错找不到。
      android:inputType设置文本的类型,用于帮助输入法显示合适的键盘类型。在EditView中再详细说明,这里无效果。
      android:linksClickable设置链接是否点击连接,即使设置了autoLink。
      android:marqueeRepeatLimit在ellipsize指定marquee的情况下,设置重复滚动的次数,当设置为marquee_forever时表示无限次。
      android:ems设置TextView的宽度为N个字符的宽度。这里测试为一个汉字字符宽度,如图:
    android:maxEms设置TextView的宽度为最长为N个字符的宽度。与ems同时使用时覆盖ems选项。
    android:minEms设置TextView的宽度为最短为N个字符的宽度。与ems同时使用时覆盖ems选项。
      android:maxLength限制显示的文本长度,超出部分不显示。
      android:lines设置文本的行数,设置两行就显示两行,即使第二行没有数据。
      android:maxLines设置文本的最大显示行数,与width或者layout_width结合使用,超出部分自动换行,超出行数将不显示。
      android:minLines设置文本的最小行数,与lines类似。
      android:lineSpacingExtra设置行间距。
      android:lineSpacingMultiplier设置行间距的倍数。如”1.2”
      android:numeric如果被设置,该TextView有一个数字输入法。此处无用,设置后唯一效果是TextView有点击效果,此属性在EdtiView将详细说明。
      android:password以小点”.”显示文本
      android:phoneNumber设置为电话号码的输入方式。
      android:privateImeOptions设置输入法选项,此处无用,在EditText将进一步讨论。
      android:scrollHorizontally设置文本超出TextView的宽度的情况下,是否出现横拉条。
      android:selectAllOnFocus如果文本是可选择的,让他获取焦点而不是将光标移动为文本的开始位置或者末尾位置。TextView中设置后无效果。
      android:shadowColor指定文本阴影的颜色,需要与shadowRadius一起使用。效果:
    android:shadowDx设置阴影横向坐标开始位置。
      android:shadowDy设置阴影纵向坐标开始位置。
      android:shadowRadius设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好。
      android:singleLine设置单行显示。如果和layout_width一起使用,当文本不能全部显示时,后面用“…”来表示。如android:text="test_ singleLine " android:singleLine=“true” android:layout_width="20dp"将只显示“t…”。如果不设置singleLine或者设置为false,文本将自动换行
      android:text设置显示文本.
    android:shadowDx设置阴影横向坐标开始位置。
      android:shadowDy设置阴影纵向坐标开始位置。
      android:shadowRadius设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好。
      android:singleLine设置单行显示。如果和layout_width一起使用,当文本不能全部显示时,后面用“…”来表示。如android:text="test_ singleLine " android:singleLine=“true” android:layout_width="20dp"将只显示“t…”。如果不设置singleLine或者设置为false,文本将自动换行
      android:text设置显示文本.
     android:textSize设置文字大小,推荐度量单位”sp”,如”15sp”
      android:textStyle设置字形[bold(粗体) 0, italic(斜体) 1, bolditalic(又粗又斜) 2] 可以设置一个或多个,用“|”隔开
      android:typeface设置文本字体,必须是以下常量值之一:normal 0, sans 1, serif 2, monospace(等宽字体) 3]
      android:height设置文本区域的高度,支持度量单位:px(像素)/dp/sp/in/mm(毫米)
      android:maxHeight设置文本区域的最大高度
      android:minHeight设置文本区域的最小高度
      android:width设置文本区域的宽度,支持度量单位:px(像素)/dp/sp/in/mm(毫米),与layout_width的区别看这里。
      android:maxWidth设置文本区域的最大宽度
      android:minWidth设置文本区域的最小宽度
      android:textAppearance设置文字外观。如“?android:attr/textAppearanceLargeInverse
      ”这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。可设置的值如下:textAppearanceButton/textAppearanceInverse/textAppearanceLarge/textAppearanceLargeInverse/textAppearanceMedium/textAppearanceMediumInverse/textAppearanceSmall/textAppearanceSmallInverse
      android:textAppearance设置文字外观。如“?android:attr/textAppearanceLargeInverse
      ”这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。可设置的值如下:textAppearanceButton/textAppearanceInverse/textAppearanceLarge/textAppearanceLargeInverse/textAppearanceM

    参考文章:
    https://blog.csdn.net/shenggaofei/article/details/52262314
    https://cloud.tencent.com/developer/article/1463443

  • 相关阅读:
    SpringBoot2.7.9 配置文件加载方式
    Linux vi编辑器的使用
    MyBatisPlus的in方法入参数量过多导致的JVM频繁FullGC案例
    latex模板列出所有参考文献并加上超链接(xiaoming et al. 2022; xiaohong et al. 2021)
    Java并发-ThreadLocal的使用
    测试docker GPU性能损失
    【LINUX】退出码和文件
    Spark Streaming状态管理函数
    什么是web3 | 区块链web3.0人才
    jmeter单接口和多接口测试
  • 原文地址:https://blog.csdn.net/mfysss/article/details/128066811