Android: Typeface изменяется, когда я применяю пароль Type on 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]()
Ответы
Ответ 1
Следующие могут решить это для вас.
pass.setTypeface(user.getTypeface());
По сути, он просто передает Typeface
поля вашего имени пользователя и передает его как поле Typeface
для вашего пароля.
Я нашел объяснение этого в Руководстве API диалогов.
Совет: По умолчанию, когда вы устанавливаете элемент EditText для использования "textPassword"
тип шрифта, семейство шрифтов установлено в моноширину, поэтому вы должен изменить семейство шрифтов на "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"/>
Ответ 2
вы можете использовать android: hit и setHitColor в своей деятельности, это не повлияет на нормальный вход
Ответ 3
Возможно, поздно ответить на этот вопрос, но я столкнулся с этой проблемой. Так что подумал, чтобы ответить на это. Я решил его 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));
Ответ 4
По какой-то причине мне не нужно было устанавливать метод преобразования, чтобы это могло быть лучшим решением.
В MyActivity:
EditText editText_password = findViewById(R.id.edittext);
editText_password.setTransformationMethod(new PasswordTransformationMethod());