web-dev-qa-db-ja.com

Android:EditTextにパスワードを入力するとタイプフェイスが変更されます

FloatLabelライブラリ( https://github.com/weddingparty/AndroidFloatLabel )を使用して、ユーザーが開始したときに少しアニメーションを追加しますEditText Androidで何かを書く。

私の問題は、EditTextにパスワードタイプを適用すると、書体が変更されるように見えることです。通常と同じ書体を維持したいと思います。 (写真1を参照)

enter image description here

しかし、パスワードタイプを適用するために次の行を追加すると、ヒントの書体が変更されたようです!

pass.getEditText().setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);

enter image description here

46
wawanopoulos

以下はあなたのためにそれを解決するかもしれません。

pass.setTypeface(user.getTypeface());

基本的に、ユーザー名フィールドのTypefaceを渡し、パスワードフィールドのTypefaceとして渡します。


この説明は Dialogs API Guide にあります。

Tip:デフォルトでは、"textPassword"入力タイプを使用するようにEditText要素を設定すると、フォントファミリは等幅に設定されるため、フォントファミリを"sans-serif"に変更して、両方のテキストフィールドが一致するフォントスタイルを使用するようにする必要があります。

つまり、XMLで実行できる修正は次のようになります。

<EditText
    Android:id="@+id/password"
    Android:inputType="textPassword"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:fontFamily="sans-serif"
    Android:hint="@string/password"/>
128
Andrew Schuster

何らかの理由で変換方法を設定する必要がなかったので、これがより良い解決策になるかもしれません。 MyActivityで:

  EditText editText_password = findViewById(R.id.edittext);
    editText_password.setTransformationMethod(new PasswordTransformationMethod());
4
Cüneyt

アクティビティでAndroid:hitおよびsetHitColorを使用できますが、通常の入力には影響しません

1
smallfatter

xmlでinputTypeを「テキスト」として設定

<EditText
    Android:id="@+id/edtPassword"
    Android:inputType="textPassword"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:hint="@string/password"
    Android:inputType="text"/>

アクティビティのEditTextを次のようにします

mEdtConfirmPassword = findViewById(R.id.edtPassword);
mEdtConfirmPassword.setTransformationMethod(new PasswordTransformationMethod());
0
Gowtham. R

この質問に答えるのは遅いかもしれませんが、私はこの問題に出会いました。これに答えようと思いました。 Implementing a CustomTextWatcherで解決しました。

ここにスニペットがあります

private class CustomTextWatcher implements TextWatcher {
    private EditText mEditText;

    public CustomTextWatcher(EditText e) { 
        mEditText = e;
        mEditText.setTypeface(Typeface.DEFAULT);
    }

    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        mEditText.setTypeface(Typeface.DEFAULT);
    }

    public void onTextChanged(CharSequence s, int start, int before, int count) {
        mEditText.setTypeface(Typeface.MONOSPACE);
    }

    public void afterTextChanged(Editable s) { 
        if(s.length() <= 0){
            mEditText.setTypeface(Typeface.DEFAULT);
        } else {
            mEditText.setTypeface(Typeface.MONOSPACE);
        }


    }
}

アプリケーションで使用する方法を次に示します

EditText pin = (EditText) findViewById(R.id.pin);
pin.addTextChangedListener(new CustomTextWatcher(pin));
0
BBdev