我正在尝试使用android:inputType =" numberPassword"它不起作用。这些数字仍然出现在EditText中。这只发生在我输入第一个后添加TextWatcher切换到下一个EditText时。
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
if (ps1.getText().hashCode() == s.hashCode()) {
ps1.clearFocus();
ps2.requestFocus();
ps2.setCursorVisible(true);
} else if (ps2.getText().hashCode() == s.hashCode()) {
ps2.clearFocus();
ps3.requestFocus();
ps3.setCursorVisible(true);
} else if (ps3.getText().hashCode() == s.hashCode()) {
ps3.clearFocus();
ps4.requestFocus();
ps4.setCursorVisible(true);
}
}
我能做些什么来使这项工作正常进行?
答案 0 :(得分:1)
This problem can be solved without using deprecated android:password. Use the following code snippet, but do not reverse the sequence of calls:
EditText editText = (EditText) findViewById(R.id.MyEditText);
editText.setInputType(InputType.TYPE_CLASS_NUMBER);
editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
答案 1 :(得分:1)
在xml文件中使用以下行,希望它能帮到你
android:password="true"
可能会被弃用,但它只会尝试解决您的问题
或者你可以尝试
android:inputType="textPassword|number"
忽略textPassword,只接受号码,但不接受密码。
因此,您应将android:inputType="textPassword|number"
与android:password="true".
这似乎是唯一的解决方案。
答案 2 :(得分:1)
只需在 XML 中编写编辑文本,如下所示。
<EditText
android:id="@+id/ed_login_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:inputType="textPassword"
android:singleLine="true"
android:text=""
/>
OR
以编程方式 setinputtype 试用 Edittext 。
editPass.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD)
我认为他们的Textwatcher存在问题,所以如果你想将单个TextWatcher用于多个EditTexts 。
请查看以下链接: - How to use Single TextWatcher for multiple EditTexts?
OR
使用以下 TextWatcher
方法访问您的Editextspublic void afterTextChanged(Editable editable) {
}
希望它会对你有所帮助。
答案 3 :(得分:0)
如果有人在寻找简单的答案。让您的EditText包含此行android:inputType="numberPassword"
。无需使用折旧的东西。只需将代码放在afterTextChanged而不是onTextChanged。
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
if (ps1.getText().hashCode() == s.hashCode()) {
ps1.clearFocus();
ps2.requestFocus();
ps2.setCursorVisible(true);
} else if (ps2.getText().hashCode() == s.hashCode()) {
ps2.clearFocus();
ps3.requestFocus();
ps3.setCursorVisible(true);
} else if (ps3.getText().hashCode() == s.hashCode()) {
ps3.clearFocus();
ps4.requestFocus();
ps4.setCursorVisible(true);
}
}
我不确定为什么这样有效,所以任何知道的人都可以解释一下。
答案 4 :(得分:0)