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

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

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

首先必须说一说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()方法,EditText在XML中的inputType为textPassword,在Activity的onCreate()中调用函数进行绑定即可。

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

原文地址:https://www.cnblogs.com/nicojerry/p/10341213.html

时间: 2024-10-09 21:03:08

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

动态修改EditText输入键盘并隐藏或显示密码

做登录或转账系统的人会碰到需要输入密码的情况,而且可能会要求有时明文显示,有时密文显示.如何通过代码来控制呢? 下面的xml定义了一个输入框EditText,默认是系统键盘: <EditText android:id="@+id/inputview" style="@style/Style_Input" android:layout_width="fill_parent" android:layout_height="wrap_c

安卓基础开发-短信发送器

一个安卓基础开发小案例,短信发送器: 代码演示图: 布局文件: activity_main.xml <span style="font-family:Comic Sans MS;font-size:14px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/

安卓基础

1.  Service 服务 (是一个没有用户界面的在后台运行执行耗时操作的应用组件) 第一种方式: (startService 未绑定, 当程序退出,若没有停止服务则会继续在后台运行) //继承 Service public class MyService extends Service { private String tag = "MyService"; @Override public IBinder onBind(Intent intent) { // TODO Auto-g

安卓基础01

安卓基础01 SDK System images 这是在创建模拟器时需要的system image,也就是在创建模拟器时CPU/ABI项需要选择的,下载并解压后,将解压出的整个文件夹复制或者移动到 your sdk 路径/system-images文件夹下即可, 如果没有 system-images目录就先 创建此文件夹,然后打开SDK Manager,打开Tools(工 具)菜单选择Options(选项)菜单项打开Android SDK Manager Setting对话框,点击Clear C

【安卓】imageView.scaleType取centerCrop后,再用padding时显示异常?

imgView.setCropToPadding(true);即可          [安卓]imageView.scaleType取centerCrop后,再用padding时显示异常?,布布扣,bubuko.com

回顾安卓基础

以前老张教c的时候说过:学的越多,总结的越少,就越好. 开始的时候不能理解,现在终于慢慢悟出了. 准备慢慢总结一下经常用到的安卓基础,算是重温一下美好记忆吧.个人博客记录个人心得,希望开心自己的同时也能够帮助别人. 从布局开始吧: 总结相对布局: 1.父控件与子控件的关系(alignParentXXX) 2.控件与指定控件的位置关系.(above,below,toRightOf,toLeftOf) 3.控件与指定控件的对其关系(alignTop,alignBottom,alignLeft,ali

安卓基础之主题/样式

安卓基础之主题/样式 样式:一般作用在控件上,使多个控件拥有相同风格 主题:一般作用清单文件的activity或application结点下 样式Style的使用 系统自动在app/res/values/路径下建立style.xml文件,用来添加,引用Style,因此一般情况下我们在这个文件中定义自己的Style就可以了. 定义好一个style后,我们就可以在定义控件时调用这个Style 如果我们要在界面中定义样式相似的多个组件,我们可以把控件中的相同的属性抽出来,自定义Style,定义控件时引

动画基础隐藏和显示 (jQuery)

1jQuery中隐藏元素的hide方法 让页面上的元素不可见,一般可以通过设置css的display为none属性.但是通过css直接修改是静态的布局,如果在代码执行的时候,一般是通过js控制元素的style属性,这里jQuery提供了一个快捷的方法.hide()来达到这个效果 $elem.hide() 提供参数: .hide( options ) 当提供hide方法一个参数时,.hide()就会成为一个动画方法..hide()方法将会匹配元素的宽度,高度,以及不透明度,同时进行动画操作 快捷参

实战基础技能(13)--------C#代码实现隐藏任务栏、开始菜单和禁用任务管理器

一:截图,主要是调用系统接口和更改注册表实现功能 二:代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.I