2012-11-07 38 views
3

我正在使用Android處理應用程序。我的要求是在用戶輸入密碼時隱藏密碼。我知道如何隱藏密碼,但用戶輸入的密碼在轉換爲不可讀的格式之前可以看到一段時間。在這方面任何人都可以幫助我。如何在輸入時隱藏密碼的字母

回答

4

不要設置默認編輯文本屬性作爲密碼。相反,您可以使用addTextChangedListener(),只要用戶輸入字符,它就會被調用。維護一個活動級別的字符串,如「mPass」。在TextWatcher(),onTextChanged方法中,將字符附加到您的mPass並用*替換輸入字符。

但是,即使在用*替換了字符後,您也必須小心這個應用程序將把控制權交給TextWatcher()。如果處理不當,將會以遞歸方式調用,導致應用程序崩潰。

乏味的方式,但它會工作...

+0

你可以分享代碼嗎? – powder366

-1

set android:password="true"。它會做你期望的。

實施例:

<EditText 
      android:id="@+id/editText1" 
      android:inputType="number" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:password="true" /> 
+0

Mr.Mechanic,我意識到秒。但我的要求是不同的。請再次通讀這篇文章。 – user1799259

7

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

剛進入一般情況下,安全性,然後滾動,直到你找到'使密碼可見'(當你輸入密碼時會短暫顯示密碼字符),這將停止短時間內發出的信件,並且會減少在你輸入密碼時保持安全,保持開心的人讀取密碼的可能性= )

+0

OP希望在應用方面提供解決方案,而不是基於手機設置。 – CubeJockey

相關問題