閱讀380 返回首頁    go 技術社區[雲棲]


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

  上一篇:go 尼采:快樂的知識(上)
  下一篇:go 優先隊列+模擬-Fox and Number Game