FloatLabelライブラリ( https://github.com/weddingparty/AndroidFloatLabel )を使用して、ユーザーが開始したときに少しアニメーションを追加しますEditText Androidで何かを書く。
私の問題は、EditTextにパスワードタイプを適用すると、書体が変更されるように見えることです。通常と同じ書体を維持したいと思います。 (写真1を参照)
しかし、パスワードタイプを適用するために次の行を追加すると、ヒントの書体が変更されたようです!
pass.getEditText().setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
以下はあなたのためにそれを解決するかもしれません。
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"/>
何らかの理由で変換方法を設定する必要がなかったので、これがより良い解決策になるかもしれません。 MyActivityで:
EditText editText_password = findViewById(R.id.edittext);
editText_password.setTransformationMethod(new PasswordTransformationMethod());
アクティビティでAndroid:hitおよびsetHitColorを使用できますが、通常の入力には影響しません
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());
この質問に答えるのは遅いかもしれませんが、私はこの問題に出会いました。これに答えようと思いました。 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));