Androidでアプリを扱っています。私の要件は、ユーザーがパスワードを入力している間、パスワードを非表示にすることです。パスワードを非表示にする方法は知っていますが、ユーザーが入力したパスワードは、判読できない形式に変換する前にしばらく表示されます。
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));
}
}
}
}
デフォルトの編集テキスト プロパティをpasswordとして設定しないでください。代わりにaddTextChangedListener()
、ユーザーが文字を入力するとすぐに呼び出される which を使用できます。「mPass」などの活動レベル文字列を維持します。,メソッドでTextWatcher()
、onTextChanged
文字を mPass に追加し、入力文字を * に置き換えます。
TextWatcher()
ただし、文字を * に置き換えた後でも、このアプリケーションは に制御を渡すため、注意が必要です。適切に処理されないと、再帰的に呼び出され、アプリケーションがクラッシュします。
退屈な方法ですが、うまくいきます...
AndroidにはTextViewの属性があります:
android:password フィールドの文字を、それ自体ではなくパスワードのドットとして表示するかどうか。
http://developer.android.com/reference/android/widget/TextView.html#attr_android:パスワード
一般、セキュリティに移動し、「パスワードを表示する」が見つかるまでスクロールします(パスワードを入力すると、パスワードの文字が短時間表示されます)。これにより、文字が短時間表示されなくなり、誰かがパスワードを読み取る可能性が減少します。入力すると。
セットandroid:password="true"
。それはあなたが期待することをします。
例:
<EditText
android:id="@+id/editText1"
android:inputType="number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:password="true" />