android动态显示键盘,动态修改EditText输入键盘并隐藏或显示密码
做登錄或轉(zhuǎn)賬系統(tǒng)的人會(huì)碰到需要輸入密碼的情況,而且可能會(huì)要求有時(shí)明文顯示,有時(shí)密文顯示。如何通過代碼來控制呢?
下面的xml定義了一個(gè)輸入框EditText,默認(rèn)是系統(tǒng)鍵盤:
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()); //數(shù)字
} 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 則可以支持將輸入的字符轉(zhuǎn)換,包括清除換行符、轉(zhuǎn)換為掩碼
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;
}
}
這里需要注意的是,數(shù)字密碼到android3.0(android.os.Build.VERSION_CODES.HONEYCOMB)才獲得支持,對(duì)于3.0以下的版本,通過代碼改變的話,還是需要用字符密碼。
對(duì)于數(shù)字密碼還有一種方法是設(shè)置為字符密碼,但是對(duì)鍵盤顯示進(jìn)行過濾,只顯示數(shù)字。如:
String digits = "0123456789";
DigitsKeyListener digitsKeyListener = DigitsKeyListener.getInstance(digits);
inputview.setKeyListener(digitsKeyListener);
還可以通過代碼對(duì)EditText做更多的控制。
總結(jié)
以上是生活随笔為你收集整理的android动态显示键盘,动态修改EditText输入键盘并隐藏或显示密码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数字规律分析软件 彩票软件免费下载
- 下一篇: android 构造xml,androi