我想创建一个接受密码的EditText.我想在输入字符后立即隐藏字符.所以,我使用了TransformationMethod.
我是新手,所以,我尝试了以下代码.
我是新手,所以,我尝试了以下代码.
EditText editText = (EditText) findViewById(R.id.editText); editText.setTransformationMethod(new PasswordTransformationMethod()); private class PasswordTransformationMethod extends Transformation implements TransformationMethod { @Override public CharSequence getTransformation(CharSequence source,View view) { return "/"; } @Override public void onFocusChanged(View view,CharSequence source,boolean focused,int direction,Rect previouslyFocusedRect) { source = getTransformation(source,view); } }
然而,它抛出,
01-03 10:22:35.750: E/AndroidRuntime(2102): java.lang.IndexOutOfBoundsException
我错过了什么.任何帮助将不胜感激.
解决方法
上述方法有很多错误.
所以,我正在分享用于将密码转换为点的代码.
在这样的Java文件中创建一个单独的类,
public class MyPasswordTransformationMethod extends PasswordTransformationMethod { @Override public CharSequence getTransformation(CharSequence source,View view) { return new PasswordCharSequence(source); } private class PasswordCharSequence implements CharSequence { private CharSequence mSource; public PasswordCharSequence(CharSequence source) { mSource = source; } public char charAt(int index) { return '.'; } public int length() { return mSource.length(); } public CharSequence subSequence(int start,int end) { return mSource.subSequence(start,end); // Return default } } };
实现是这样的,
passwordEditText = (EditText) findViewById(R.id.passwordEditText); passwordEditText.setTransformationMethod(new MyPasswordTransformationMethod());
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。