預設 inputType="textPassword" 顯示圓點(●),需改為星號(*)。
public class AsteriskPasswordTransformationMethod extends PasswordTransformationMethod {
@Override
public CharSequence getTransformation(CharSequence source, View view) {
return new PasswordCharSequence(source);
}
private static class PasswordCharSequence implements CharSequence {
private final CharSequence mSource;
public PasswordCharSequence(CharSequence source) { mSource = source; }
@Override public char charAt(int index) { return '*'; }
@Override public int length() { return mSource.length(); }
@Override public CharSequence subSequence(int start, int end) { return mSource.subSequence(start, end); }
}
}
<EditText
android:id="@+id/et_password"
android:inputType="textPassword"
android:transformationMethod="com.yourpackage.AsteriskPasswordTransformationMethod" />
EditText etPassword = findViewById(R.id.et_password);
etPassword.setTransformationMethod(new AsteriskPasswordTransformationMethod());
PasswordTransformationMethod 可保留密碼隱藏語義(無障礙服務識別為密碼欄)。setTransformationMethod(null)(顯示明文)與自定義類切換。android:fontFamily="sans-serif" 確保星號渲染一致。