前言:

在我们的登录界面经常会遇到查看自己输入密码是否正确,就会用到明密文切换

正文:

我们先写出xml文件文件中的代码,不用过多解释

 <EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入密码"
android:inputType="textPassword"
android:ems="10"
android:id="@+id/input"/>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="查看密码"
android:id="@+id/checkbox"
android:layout_below="@+id/input"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />

接下来我们先初始化控件,然后对CheckBox设置监听器,使用匿名类,在重写onCheckedChanged方法中,如果点击了CheckBox按钮,则CheckBox对象调用setTransformationMethod方法,方法中的参数用到HideReturnsTransformationMethod

类直接调用静态方法getInstance()

如果要再次转变为密文的形式,和上面不同的是setTransformationMethod方法中参数为PasswordTransformationMethod类,然后该类直接调用静态方法getInstance()

这样虽然能实现明密文切换,但是切成明文后,在输入密码则会在开头输入,所以我们得进行接下来的操作

 edittext.setSelection(edittext.getText().length());

这样就可以在切换为明文后继续在之前输入的密码后输入密码

完整代码为:

 import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.method.HideReturnsTransformationMethod;
import android.text.method.PasswordTransformationMethod;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast; public class MainActivity extends AppCompatActivity {
private CheckBox checkbox;
private EditText edittext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
checkbox=(CheckBox)findViewById(R.id.checkbox);
edittext=(EditText)findViewById(R.id.input);
edittext.setCursorVisible(false); checkbox.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked){
edittext.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
Toast.makeText(MainActivity.this, "您点击了查看密码", Toast.LENGTH_SHORT).show();
}else {
edittext.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
edittext.setSelection(edittext.getText().length());
}
}); }
}

第21行代码作用是把光标隐藏

Android明密文切换的更多相关文章

  1. input type=passoord 密码框的明密文(显示和隐藏) 显示

    最近在写一个新的项目,从头开始写,所以就要从注册登录开始做起.以前写登录注册模块的时候,无外乎给input框一个type=”password”就可以了,近期因为要涉及到显示隐藏状态的切换. 样式代码如 ...

  2. android 实现点击edittext的“小眼睛”切换明密文

    android 实现点击edittext的“小眼睛”切换明密文    版权声明:本文为博主原创文章,未经博主允许不得转载.   很多时候,我们为了用户的隐私安全,需要在密码输入的时候,显示密文.为了更 ...

  3. Android横竖屏切换及其对应布局加载问题

    第一,横竖屏切换连带横竖屏布局问题: 如果要让软件在横竖屏之间切换,由于横竖屏的高宽会发生转换,有可能会要求不同的布局. 可以通过以下两种方法来切换布局: 1)在res目录下建立layout-land ...

  4. Android横竖屏切换小结

    Android横竖屏切换小结 (老样子,图片啥的详细文档,可以下载后观看 http://files.cnblogs.com/franksunny/635350788930000000.pdf) And ...

  5. 【转】Android横竖屏切换问题

    Android横竖屏切换总结(Android资料) Android横竖屏要解决的问题应该就两个: 一.布局问题 二.重新载入问题 1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的 ...

  6. Android横竖屏切换及其相应布局载入问题

    第一.横竖屏切换连带载入多屏布局问题: 假设要让软件在横竖屏之间切换.因为横竖屏的高宽会发生转换,有可能会要求不同的布局. 能够通过下面两种方法来切换布局: 1)在res文件夹下建立layout-la ...

  7. Android Activity的切换动画

    Android的Activity切换有两种方法, 第一种是用代码方式实现: Activity A跳转到Activity B,要在startActivity(intent)后面加上overridePen ...

  8. Android横竖屏切换总结

    Android横竖屏切换总结(Android资料) Android横竖屏要解决的问题应该就两个: 一.布局问题 二.重新载入问题 1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的 ...

  9. Android 主题动态切换框架:Prism

    Prism(棱镜) 是一个全新的 Android 动态主题切换框架,虽然是头一次发布,但它所具备的基础功能已经足够强大了!本文介绍了 Prism 的各种用法,希望对你会有所帮助,你也可以对它进行扩展, ...

随机推荐

  1. idea中scala语言自动补全变量的同时,也自动补全类型

    IDE是IDEA,scala中,在new一个对象时,通过快捷键ctrl + Alt + V自动补全变量,但是我还想自动补全变量的类型,就像图中所示,在Specify type前面自动帮你打勾. 可以按 ...

  2. Linux centosVMware 告警系统主脚本、告警系统配置文件、告警系统负载脚本、告警系统502日志脚本、告警系统disk监控脚本、告警系统邮件引擎

    一.告警系统主脚本 要求:我们的机器角色多种多样,但是所有机器上都要部署同样的监控系统,也就说所有机器不管什么角色,整个程序框架都是一致的,不同的地方在于根据不同的角色,定制不同的配置文件. 程序架构 ...

  3. YUV 和 YCbCr 辨析

    YCbCr或Y'CbCr 是在世界数字组织视频标准研制过程中作为ITU-R BT1601 建议的一部分, 其实是YUV经过缩放和偏移的翻版. 通常会用于影片中的影像连续处理,或是数字摄影系统中. 其中 ...

  4. Python 基础之匿名函数 迭代器和高阶函数

    一.匿名函数 lambda表达式 用一句话来表达只有返回值的函数,叫匿名函数特点:简洁方便语法:lambda 参数: 返回值 1.不带有参数的lambda表达式 def func():    retu ...

  5. JS 循环赋值

    var x_world_map_tiles = 100; var y_world_map_tiles = 100; var world_map_array = []; for (i=0; i<= ...

  6. 119、Java中String类之通过isEmpty判断是否为空字符串

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  7. Node.js 阻塞 回调函数

    回调例程 N所有API都支持回调函数,可以处理大量并发请求.回调函数一般作为最后一个参数出现: function foo1(name, age, callback){ } function foo2( ...

  8. 为什么maven没有.m2文件

    该问题可能描述不清,建议你重新提问 为什么maven没有.m2文件 彼岸之恋°DD | 浏览 4793 次 问题未开放回答 2016-09-23 17:29 最佳答案 对于初学者在安装配置好maven ...

  9. 学习:Android框架

      引言 通过前面两篇: Android 开发之旅:环境搭建及HelloWorld Android 开发之旅:HelloWorld项目的目录结构 我 们对android有了个大致的了解,知道如何搭建a ...

  10. Xcode下载途径

    Xcode除了能在Appstore直接下载外,还可以用开发者账号登陆开发者中心[https://developer.apple.com/download/]下载对应的资源. 在开发者中心下载的好处是, ...