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

做登录或转账系统的人会碰到需要输入密码的情况,而且可能会要求有时明文显示,有时密文显示。如何通过代码来控制呢?

下面的xml定义了一个输入框EditText,默认是系统键盘:

            <EditText
                android:id="@+id/inputview"
                style="@style/Style_Input"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:maxLength="16"
                android:padding="10dp"
                android:singleLine="true"
                android:textCursorDrawable="@null"
                android:visibility="visible" >
            </EditText>

通过下面的代码改变输入类型:

	@SuppressLint("InlinedApi")
	public void setValueType(ValueType valueType) {
		this.valueType = valueType;
		switch(valueType) {
		case EEditPwdNum:
			if (showPwd) {
			    // 显示密码
				inputView.setInputType(InputType.TYPE_CLASS_NUMBER);
				inputView.setTransformationMethod(android.text.method.HideReturnsTransformationMethod.getInstance()); //数字
		    } else {
			    // 隐藏密码    3.0版才开始支持
				if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) {
					inputView.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); //字符
				} else {
					inputView.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);
					//setTransformationMethod 则可以支持将输入的字符转换,包括清除换行符、转换为掩码
					inputView.setTransformationMethod(android.text.method.PasswordTransformationMethod.getInstance());
				}
			}
			break;
		case EEditPwdTxt:
			if (showPwd) {
			    // 显示密码
				inputView.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); //字符
		    } else {
			    // 隐藏密码
				inputView.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); //字符
			}
			break;
		case EText:
		default:
			break;
		}
	}

这里需要注意的是,数字密码到android3.0(android.os.Build.VERSION_CODES.HONEYCOMB)才获得支持,对于3.0以下的版本,通过代码改变的话,还是需要用字符密码。

对于数字密码还有一种方法是设置为字符密码,但是对键盘显示进行过滤,只显示数字。如:

String digits = "0123456789";

DigitsKeyListener digitsKeyListener = DigitsKeyListener.getInstance(digits);

inputview.setKeyListener(digitsKeyListener);

还可以通过代码对EditText做更多的控制。

时间: 2024-11-08 23:31:35

动态修改EditText输入键盘并隐藏或显示密码的相关文章

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

项目中经常会有这样的需求,在密码输入框的右边有一个小图标,点击就切换显示和隐藏密码. 其实这里需求实现起来是比较容易的,主要考虑是复用问题,因为登陆.注册.修改密码界面都会有这样的情景,如果每个界面都独立写一次这样的逻辑显然是不符合代码复用的理念,所以需要把这个情景抽象出来,用代码去实现一个工具库. 首先必须说一说EditText的inputType了,当我们在XML中指定EditText的inputType为textPassword时,输入的内容会以星号呈现. <EditText androi

EditText隐藏和显示

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" a

动态修改easyui-datagrid 列

<table id="DataList" title="查询结果" style="width:99%;padding:10px;"></table> ① 隐藏列 $('#DataList').datagrid('hideColumn', 'Columnfield'); ② 动态修改列标题 $('div[class$="Columnfield"] :not(.datagrid-sort-icon)').h

[SAP ABAP开发技术总结]动态修改选择屏幕

声明:原创作品,转载时请注明文章来自SAP师太博客,并以超链接形式标明文章原始出处,否则将追究法律责任!原文出自: 12.16.             动态修改屏幕 选择屏幕.对话屏幕都有对应的SCREEN内表,下面是几个重要属性: NAME:Name of the screen field.如果参数是select-options类型参数,则参数名以LOW与HIGH后缀来区分. GROUP1:选择屏幕元素通过 MODIF ID 选项设置GROUP1(对话屏幕通过属性设置),将屏幕元素分为一组,

JQuery插件开发之如何实时显示被隐藏的输入框密码

原文链接:http://www.gbtags.com/gb/share/5827.htm 我们前面曾经介绍过如何提高用户界面表单性能,同时我们也介绍过如何避免使用密码框来避免隐藏输入的密码,也讨论过隐藏密码显示对于用户体验将有多么糟糕. 基本上对于密码输入处理我们有如下俩个可选方式: 继续使用密码框控件,不考虑用户的操作体验 使用一般的输入框,不考虑用户密码的安全性 这就是为什么我们这里需要开发一个鼠标悬浮可显示密码的控件作为第三选择的原因,既可以提高安全,同时也可以大大满足用户体验 今天将讲解

集算报表用Java动态修改报表数据源

实际应用中通过程序动态修改报表模板的情况很常见,其中动态修改数据源SQL就是一种典型场景.常见于系统中有一些结构相同而数据源不同的报表,为减少报表开发工作量,只开发一套报表模板,使用时通过程序动态修改数据源来满足实际需要. 下面通过一个使用JAVA程序修改集算报表数据源SQL的例子说明使用过程. 编辑报表模板: 由于不同数据源的字段不同,因此这里使用动态表达式ds1.fname()获取字段名,ds1.field()获取字段值.此外,第一行和第一列为辅助行列,设置其隐藏. 编写代码: 1.读入报表

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

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

自己动手丰衣足食之轮播图一动态修改marginTop属性实现轮播图

引言 学习jQuery有年头了,刚开始学习时自己动手写过轮播图,放的久了以至于忘了大致思路了.现在转而做前端,抽空把jquery轮播图拿出来写一写,把各种思路都自己练习练习,这里主要使用动态修改marginTop来实现. 实现原理 1.除第一张图片外,其余图片全部隐藏,4张图片重叠起来. 2.导航按钮添加mouseover和mouseleave事件. 3.设置interval函数,启动定时器调用ShowImg函数. 4.动态修改marginTop属性达到上下轮播的效果,说道动态修改margin属

GridView 动态修改Item的LayoutParam导致Item的OnClickListener失效

GridView 动态修改Item的LayoutParam导致Item的OnClickListener失效 项目中为了实现图片的数量以及大小(类似微信图片的单张图片显示,和多张图片显示的大小是不同的)的效果,采用GridView动态修改边界,以及动态修改ImageView的大小的方式.实现效果如下: 单图: 多图 到目前为止,没有遇到什么问题,可是,之后就遇到一个问题,就是在ImageView上设置OnClickListener,第0张图片无法点击的问题. 追踪源码,发现一直运行到: 这个函数的