ユーザーの4桁のPINを入力するためのビューを使用しています。 UIは、それぞれがmaxLengthを1に設定した4つの編集テキストで構成されています。テキスト1を編集するために値を入力すると、フォーカスは2番目の編集テキストに移動します。各Edittext入力タイプはnumberPasswordです。 JavaでEdittext入力タイプのパスワードで、フォーカスがクリアされた後でテキストが隠れていません。
<EditText
android:id="@+id/ed_1"
android:layout_width="20dp"
android:layout_height="20dp"
android:gravity="center"
android:inputType="numberPassword"
android:maxLength="1" />
、フォーカスを移動するために、我々はの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の値は*に変更されていない、である、それは本当を示し入力番号(パスワードに変更されません)。最初と最後だけが*に変わります。ここでは、2の編集テキスト2と3の編集テキスト3にはまだパスワードが表示されています。今
:私たちは、4入力が
所望の出力があるべきEdittextsあります| * | * | * | * |
指定したJavaコードを使用して値を入力し、フォーカスを切り替えると、次のように変更されます。(入力値:1234):| * | 2 | 3 | * |
中央の編集テキストのいずれかにフォーカスを戻すと、値がpasswordに変わります。それはフォーカスを取り除いたためですか?フィールドをパスワードに変更するのに必要な変換時間に時間がかかりますか?値を強制的にパスワードに変更できる方法はありますか?
この2つの編集テキストではこのプロパティを使用していないため、コードを試してください。このプロパティを設定してください:android:inputType = "textPassword"とその完了した –
私はそれがとても簡単だったと思います。すべてのedittextは、質問で指定されたものとまったく同じです。それぞれがandroid:inputType = "numberPassword" – user3099103
Runnableにコードを入れて投稿してください。それは役に立ちますか? – lionscribe