380
技術社區[雲棲]
Android EditText 密碼框默認是小圓點 怎麼改成其它的(*)?
text.setTransformationMethod(new AsteriskPasswordTransformationMethod()); public class AsteriskPasswordTransformationMethod 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; // Store char sequence } public char charAt(int index) { return '*'; // This is the important part } public int length() { return mSource.length(); // Return default } public CharSequence subSequence(int start, int end) { return mSource.subSequence(start, end); // Return default } }
TextView : setInputType(). setTransformationMethod()
某些場合,可能需要在運行時令某個 TextView (可能是運行時創建的,也可以是寫在 XML 文件中的)。由於無法通過 XML 文件指定其為 password 輸入屬性,那麼如何實現這個效果呢?
TextView 有兩個方法:
setInputType(int)
setTransformationMethod(TransformationMethod)
其中 setInputType 可以更改 TextView 的輸入方式:Contact、Email、Date、Time、Short Message、Normal Text、Password 等。還可以指定各種更正選項,如 單詞首字母大寫、句子首字母大寫、自動更正等。
使用方法:
int inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT
| InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT
| InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE;
textView.setInputType(inputType);
而 setTransformationMethod 則可以支持將輸入的字符轉換,包括清除換行符、轉換為掩碼。使用方法:
textView.setTransformationMethod(PasswordTransformationMethod.getInstance());
綜合來說,如果需要實現自己的轉換,可以通過實現 TransformationMethod 接口來達到你的目的(比如讓輸入的所有字符都變成 a,或者輸入 a 顯示 z,輸入 z 顯示 a 等)。
最後更新:2017-04-03 12:56:32