【安卓基础】ImageView与EditText联动实现隐藏与显示密码

时间:2022-09-24 19:34:58

项目中经常会有这样的需求,在密码输入框的右边有一个小图标,点击就切换显示和隐藏密码。

其实这里需求实现起来是比较容易的,主要考虑是复用问题,因为登陆、注册、修改密码界面都会有这样的情景,如果每个界面都独立写一次这样的逻辑显然是不符合代码复用的理念,所以需要把这个情景抽象出来,用代码去实现一个工具库。

首先必须说一说EditText的inputType了,当我们在XML中指定EditText的inputType为textPassword时,输入的内容会以星号呈现。

 <EditText
            android:id="@+id/edittext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="textPassword" />

现在当程序运行的时候,输入的内容呈现为密码的形式,当我们点击显示密码的小图标,我们需要让EditText显示输入的内容,我们可以通过代码改变EditText的inputType。

if (hidePwd == true) { // 输入的内容显示为星号
    uiPassword.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
} else { // 正常显示输入内容
    uiPassword.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
}

通常密码输入框右边有个小图标,点击会切换显示/隐藏密码,同时小图标在显示和隐藏状态中的图标是不一样的。现在针对小图标点击,然后切换密码框的输入状态,把这种行为抽象出来成为一个函数。

// image : 小图标
// editor : 输入框
// showingDrawable : 显示密码时的小图标
// hidingDrawable : 隐藏密码时的小图标
public static void bingPwdSwitch(final ImageView image, final EditText editor, final int showingDrawable, final int hidingDrawable) {
        image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (image.getTag().equals("1") || image.getTag() == null) {
                    image.setTag("0");
                    image.setImageResource(showingDrawable);
                } else {
                    image.setTag("1");
                    image.setImageResource(hidingDrawable);
                }

                if (image.getTag().equals("1") || image.getTag() == null) {
                    editor.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
                } else {
                    editor.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
                }
            }
        });
    }

上面使用了View的getTag()方法,目的是作为状态的判断,为null或者1表示当前状态是隐藏密码,为0表示当前是显示密码状态。EditText在XML中的inputType为textPassword,在Activity的onCreate()中调用函数进行绑定即可。

bingPwdSwitch(uaShowHidePwd, uiPassword, R.mipmap.login_ic_pwd, R.mipmap.login_ic_unpwd);

【安卓基础】ImageView与EditText联动实现隐藏与显示密码的更多相关文章

  1. 通过EditText的setTransformationMethod&lpar;&rpar;隐藏或显示密码

    private Button mBtnPassword; private EditText mEtPassword; private boolean mbDisplayFlg = false; /** ...

  2. android 基础控件 EditText

    EditText 简介: EditText 控件继承 TextView ,它有TextView的所有属性和方法,并且自身是可编辑的: extends TextView java.lang.Object ...

  3. js基础--浏览器标签页隐藏或显示状态 visibility详解

    欢迎访问我的个人博客:http://www.xiaolongwu.cn 前言 在工作中我们可能会遇到这样的需求,当浏览器切换到别的标签页或着最小化时,我们需要暂停页面上正在播放的视频或者音乐,这个需求 ...

  4. wicket基础应用&lpar;3&rpar;——wicket控件的隐藏和显示

    在一个项目,页面经常要显示和隐藏一些控件,用wicket来控制显示和隐藏控件相当的方便. 1.最简单的隐藏和显示方法: wicket的控件大部分都有setVisible(...)方法,用这个方法就可以 ...

  5. jQuery-4&period;动画篇---动画基础隐藏和显示

    jQuery中隐藏元素的hide方法 让页面上的元素不可见,一般可以通过设置css的display为none属性.但是通过css直接修改是静态的布局,如果在代码执行的时候,一般是通过js控制元素的st ...

  6. EditText隐藏和显示

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  7. 【基础篇】EditText的一些属性设置

    设置EditText的背景颜色  private test_editText=null; test_editText= (EditText) findViewById(R.id.EditTextInp ...

  8. 使用padding值控制控件的隐藏与显示

    在学自定义控件下拉刷新这一案例,控制ListView头条目和尾条目的显示隐藏时,就是设置其padding值的正负控制其的显示与隐藏.这并不是什么很大的知识点.只是一个小技巧,这里给大家分享一下. 这一 ...

  9. linux如何隐藏和显示所有窗口&quest;

    centos7 基本上就跟fedora23是一样的了, 也许它们使用的内和是一样的, fedora23使用的是4.2.3, 所以使用fedora对使用centos和redhat是有优势和好处福利的. ...

随机推荐

  1. 如何下载Github单个文件&lpar;Windows平台&rpar;

    如何下载Github单个文件(Windows平台) 前提 安装Chrome 浏览器 Chrome浏览器 安装迅雷软件 安装Chrome 迅雷插件 可能商店里迅雷插件有好几种,这里使用这一种 一般使用者 ...

  2. 【记录】AutoMapper Project To not support ResolveUsing

    示例代码: public List<OrderLineDTO> GetLinesForOrder(int orderId) { Mapper.CreateMap<OrderLine, ...

  3. Java被忽略的基本知识(一)

    工作一段时间发现Java的基本知识不是一般的重要,基本知识好项目理解快.特此看java的基本知识书本<Java项目实战开发>李兴华版,看完此书准备再看一下java更深一点的书--<J ...

  4. 【转】Linux Top 命令解析 比较详细

    TOP命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况.   TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户 ...

  5. bzoj3926&colon; &lbrack;Zjoi2015&rsqb;诸神眷顾的幻想乡

    #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...

  6. jQuery延迟加载&lpar;懒加载&rpar;插件 – jquery&period;lazyload&period;js

    引入:<script type="text/javascript" src="${base}/resources/shop/js/jquery.lazyload.j ...

  7. Jsp c标签数值格式化

    整数带千分符显示:<fmt:formatNumber value="${num}" type="number"/> 整数显示:<fmt:for ...

  8. 字符串相似度算法(编辑距离算法 Levenshtein Distance)(转)

    在搞验证码识别的时候需要比较字符代码的相似度用到“编辑距离算法”,关于原理和C#实现做个记录. 据百度百科介绍: 编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个 ...

  9. Idea 添加lib文件夹,并添加至项目Libary

    在WEB-INF文件夹下新建lib文件夹,在lib文件夹上右键选择Add as Libary...,然后填写library名称,选择作用级别,选择作用项目,OK 注意:lib文件夹下需要有jar包后才 ...

  10. jQuery 简单归纳总结

    jQuery语法是为HTML元素的选取编制的,能够对元素运行某些操作. 基础语法是:$(selector).action() +美元符号定义 jQuery +选择符(selector)"查询 ...