首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Android EditText 密碼輸入框將圓點替換為星號

     編輯:程式設計疑難解答

需求

預設 inputType="textPassword" 顯示圓點(●),需改為星號(*)。

解決方案:自定義 TransformationMethod

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); }
    }
}

使用方式

XML 佈局

<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)(顯示明文)與自定義類切換。
  • API 21+ 可用 android:fontFamily="sans-serif" 確保星號渲染一致。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved