我正在使用視圖來輸入用戶的四位數PIN。用戶界面由4個edittext組成,每個edittext的maxLength設置爲1.在輸入編輯文本1的值時,焦點會轉移到第二個編輯文本等等。每個Edittext輸入類型是:numberPassword。Edittext輸入密碼,清除焦點後隱藏文字android
<EditText
android:id="@+id/ed_1"
android:layout_width="20dp"
android:layout_height="20dp"
android:gravity="center"
android:inputType="numberPassword"
android:maxLength="1" />
在java中,轉移焦點,我們已應用以下文本觀察者到每個的EditText的:
ed1.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.toString().length() == 1) {
ed1.clearFocus();
ed2.requestFocus();
ed2.setCursorVisible(true);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
問題是,的EditText的值不改變爲*,它示出了實輸入號碼(不改變爲密碼)。只有第一個和最後一個更改爲*,其中中心二意味着edittext 2和edittext 3仍然具有可見的密碼。
現在:我們有4個輸入Edittexts
所需的輸出應該是:| * | * | * | * |
當我們通過指定的java代碼填充值並切換焦點時,它們變爲:(輸入值:1234):| * | 2 | 3 | * |
如果我們重點關注中間編輯文本,則值更改爲密碼。是因爲消除了焦點,而將字段更改爲密碼所需的轉換時間需要更多時間?有沒有什麼方法可以強制將這個值更改爲密碼。
因爲您沒有對該兩個編輯文本使用該屬性。設置此屬性android:inputType =「textPassword」及其完成的先生 –
我希望它本來就這麼簡單。每個編輯文本都是問題中指定的編輯文本的精確複本。每個人都有android:inputType =「numberPassword」 – user3099103
嘗試將代碼放入Runnable中,然後發佈它,這有幫助嗎? – lionscribe