android动态显示键盘,动态修改EditText输入键盘并隐藏或显示密码
做登錄或轉賬系統的人會碰到需要輸入密碼的情況,而且可能會要求有時明文顯示,有時密文顯示。如何通過代碼來控制呢?
下面的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输入键盘并隐藏或显示密码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数字规律分析软件 彩票软件免费下载
- 下一篇: css3 flex 详解,可以实现div