如何解决android密码字段出现问题,未隐藏最后键入的字符
| 在Android中,我创建如下密码字段: EditText text = new EditText(context);
text.setTransformationMethod(PasswordTransformationMethod.getInstance());
或像这样,似乎在做同样的事情:
EditText text = new EditText(context);
text.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
除了用户键入的最后一个字符外,我得到了一个不错的密码字段。它会在屏幕上显示几秒钟,然后蜂鸣器会被点屏蔽。
这是屏幕截图:
您知道如何解决此问题吗?
解决方法
这是预期的行为。使用大多数设备上的软键盘,可以正确地输入密码,这是有价值的反馈。
您可以指定所有不同inputType的列表以及它们如何更改EditText,
参见android inputTypes。
另外,可以通过实现自己的
TransformationMethod
并通过setTransformationMethod()
进行设置来更改此行为,但我不建议这样做。用户将期待您所看到的行为,并且通过更改应用程序,您将提供不一致的用户体验。
还要检查这篇android文章
, 隐藏密码中最后输入的char的TransformationMethod的实现:
public class LoginActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// example of usage
((TextView) findViewById(R.id.password)).setTransformationMethod(new HiddenPassTransformationMethod());
}
private class HiddenPassTransformationMethod implements TransformationMethod {
private char DOT = \'\\u2022\';
@Override
public CharSequence getTransformation(final CharSequence charSequence,final View view) {
return new PassCharSequence(charSequence);
}
@Override
public void onFocusChanged(final View view,final CharSequence charSequence,final boolean b,final int i,final Rect rect) {
//nothing to do here
}
private class PassCharSequence implements CharSequence {
private final CharSequence charSequence;
public PassCharSequence(final CharSequence charSequence) {
this.charSequence = charSequence;
}
@Override
public char charAt(final int index) {
return DOT;
}
@Override
public int length() {
return charSequence.length();
}
@Override
public CharSequence subSequence(final int start,final int end) {
return new PassCharSequence(charSequence.subSequence(start,end));
}
}
}
}
, 在需要实现pin码类型的用户界面之后,我遇到了这个问题。用户输入1个数字(EditText和针数之间的1:1关系,总共4个EditText)后,密码将保持为“打开状态”。我的解决方案是实现一个TextWatcher,用项目符号(•\)代替输入。
在这里查看完整答案
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。