android:password="true"
這個隱藏字母(****),但不是馬上!當我鍵入字母時,需要一段時間才能隱藏。將edittext字段設置爲密碼?
例如,此刻我類型「A」;它顯示*** a然後它變成****。 我該如何立即轉換它?
android:password="true"
這個隱藏字母(****),但不是馬上!當我鍵入字母時,需要一段時間才能隱藏。將edittext字段設置爲密碼?
例如,此刻我類型「A」;它顯示*** a然後它變成****。 我該如何立即轉換它?
我認爲這種行爲是故意的,因爲Android是與小小的鍵盤(物理和屏幕),在其中很容易使一個錯字的智能手機使用。顯示着字母簡單是爲了讓用戶可以看到他們是否鍵入一些錯誤,而不是隱藏它,不知道該直到他們得到了「不正確的密碼,您的帳戶已被鎖定」類型的錯誤!
我相信了android:密碼=「真」分配TransformationMethod到文本字段,它負責將文本轉換成點。我不是一個Android開發者,但是從閱讀documentation我會想象這TransformationMethod具有內置到afterTextChanged回調的延遲。你可以嘗試編寫你自己的TransformationMethod並且使用它來看看你是否可以創建自己的密碼遮罩版本,而不是使用內置版本。
只要記住文檔中的警告,但是要避免無限循環,因爲更新文本可以重新觸發最初通知您的事件。
TransformationMethod執行寫入密碼時隱藏字母:
public class LoginActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// example of usage
((TextView) findViewById(R.id.password)).setTransformationMethod(new HiddenPassTransformationMethod());
}
private class HiddenPassTransformationMethod implements TransformationMethod {
private char DOT = '\u2022';
@Override
public CharSequence getTransformation(final CharSequence charSequence, final View view) {
return new PassCharSequence(charSequence);
}
@Override
public void onFocusChanged(final View view, final CharSequence charSequence, final boolean b, final int i,
final Rect rect) {
//nothing to do here
}
private class PassCharSequence implements CharSequence {
private final CharSequence charSequence;
public PassCharSequence(final CharSequence charSequence) {
this.charSequence = charSequence;
}
@Override
public char charAt(final int index) {
return DOT;
}
@Override
public int length() {
return charSequence.length();
}
@Override
public CharSequence subSequence(final int start, final int end) {
return new PassCharSequence(charSequence.subSequence(start, end));
}
}
}
}
這是標準的(和預期)的手機密碼文本框的行爲。將擴展TransformationMethod並創建PasswordTransformationMethod的更改版本是您的選擇嗎? – magma 2011-04-18 23:38:18