Android EditText 设置了密码类型,怎么修改文本密码的间距
时间: 2024-04-30 15:18:44 浏览: 9
Android EditText 设置密码类型时,默认的间距是不可修改的。但是你可以通过自定义一个 PasswordTransformationMethod 的子类来实现修改密码间距的功能。
示例代码如下:
```java
public class CustomPasswordTransformationMethod extends PasswordTransformationMethod {
private float mSpacing; // 密码间隔
public CustomPasswordTransformationMethod(float spacing) {
mSpacing = spacing;
}
@Override
public CharSequence getTransformation(CharSequence source, View view) {
CharSequence transformation = super.getTransformation(source, view);
if (transformation != null && transformation.length() > 0) {
SpannableStringBuilder spannable = new SpannableStringBuilder(transformation);
// 设置密码间隔
for (int i = 0; i < transformation.length() - 1; i++) {
spannable.setSpan(new CustomSpaceSpan((int) mSpacing), i, i + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
return spannable;
}
return transformation;
}
private static class CustomSpaceSpan extends ReplacementSpan {
private int mWidth;
CustomSpaceSpan(int width) {
mWidth = width;
}
@Override
public int getSize(Paint paint, CharSequence text, int start, int end, Paint.FontMetricsInt fm) {
return mWidth;
}
@Override
public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) {
}
}
}
```
使用示例:
```java
float spacing = 20; // 间隔为20px
EditText editText = findViewById(R.id.edit_text);
editText.setTransformationMethod(new CustomPasswordTransformationMethod(spacing));
```
这样就可以实现修改密码间距的功能了。