概述
做登录或转账系统的人会碰到需要输入密码的情况,而且可能会要求有时明文显示,有时密文显示。如何通过代码来控制呢?
下面的xml定义了一个输入框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" >
通过下面的代码改变输入类型:
@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做更多的控制。
最后
以上就是寒冷冥王星为你收集整理的android动态显示键盘,动态修改EditText输入键盘并隐藏或显示密码的全部内容,希望文章能够帮你解决android动态显示键盘,动态修改EditText输入键盘并隐藏或显示密码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复