Я хотел бы иметь возможность иметь плавающую метку уже на месте, когда я предварительно заполняю поле EditText. Когда представление загружается, подсказка по-прежнему отображается за текстом, прежде чем он будет анимирован в виде плавающей метки. Кажется, для этого нет метода в TextInputLayout библиотеки поддержки. Какие-нибудь мысли?
Как отключить анимацию плавающей метки при заполнении полей EditText, обернутых в TextInputLayout
Ответы (3)
С библиотекой дизайна поддержки v23 вы можете использовать:
til.setHintAnimationEnabled(false);
Здесь вы можете найти javadoc .
person
Gabriele Mariotti
schedule
20.08.2015
Одно замечание: анимацию нужно отключить, прежде чем мы установим текст/подсказку. Неправильная последовательность не отключит анимацию.
- person Elye; 01.08.2016
Работающий. Убедитесь, что вы вызываете метод на своем
TextInputEditText
, а не на TextINputLayout
. Анимация воспроизводится после того, как вы установите поля, а затем снова включите анимацию. :-((
- person Sevastyan Savanyuk; 09.11.2017
@Sevastyan Вам действительно не нужна анимация, пока поле не будет очищено. Добавьте прослушиватель изменения текста и снова включите анимацию, когда количество символов в поле достигнет 0.
- person Rene Juuse; 10.11.2017
Основываясь на ответе Габриэля, я написал небольшой метод для запуска после загрузки иерархии представлений, который отключает анимацию при первоначальном отображении, но включает ее после. Добавьте это в свою базовую активность/фрагмент/представление, и это решит проблему.
private void setTextInputLayoutAnimation(View view) {
if (view instanceof TextInputLayout) {
TextInputLayout til = (TextInputLayout) view;
til.setHintAnimationEnabled(false);
til.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override public boolean onPreDraw() {
til.getViewTreeObserver().removeOnPreDrawListener(this);
til.setHintAnimationEnabled(true);
return false;
}
});
return;
}
if (view instanceof ViewGroup) {
ViewGroup group = (ViewGroup) view;
for (int i = 0; i < group.getChildCount(); i++) {
View child = group.getChildAt(i);
setTextInputLayoutAnimation(child);
}
}
}
person
EE66
schedule
01.03.2018
Я получил решение, используя приведенный ниже код, я пытался использовать xml, но больше не работал, вы можете попробовать программно установить подсказку как для TextInputLayout, так и для TextInputEditText
TextInputLayout hintView = (TextInputLayout) findViewById(R.id.activity_login_inputlayout_password);
hintView.setHintAnimationEnabled(false);
hintView.setHint("");
yourEditTextPassword.setHint(getString(R.string.text_password_hint));
person
varotariya vajsi
schedule
16.06.2018