Intereting Posts
Вызов мягкой клавиатуры Android из файла C ++ Запретить кнопку «Назад» при закрытии приложения Прокрутка всего списка Просмотр горизонтально Как создается контекст в Android? Какова цель ContextThemeWrapper? Сколько текста может быть установлено в TextView, так что ему не нужно прокручивать Android: автозаполнение Google Места. Как я могу использовать его для заполнения RecyclerView, а не в раскрывающемся меню? Android spinner с выбором даты, например, приложение Google Calendar Уровень приложения onResume Android Сбой с NoSuchMethodError после proguard с ссылками на методы Ресурсы Android – какие разрешения следует использовать в каталогах hdpi, ldpi, mdpi и xhdpi Как получить намерение основного запуска Активность из другой деятельности? Android Studio 2.0 работает очень медленно Цвет фона в тексте не изменяется при нажатии в popupwindow Обмен URL-адресом на Facebook, Twitter и электронную почту на Android? Потоки приложений vs Сервисные потоки

TextInputLayout анимация перекрывает текст, когда текст установлен программно

Я использую TextInputLayout с библиотекой поддержки дизайна 22.2.1 .

Я устанавливаю значение EditText программно, и когда появляется экран, я вижу, что подсказка TextInputLayout перекрывает текст внутри, прежде чем двигаться в плавающей позиции.

Здесь простой макет:

  <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="hint1" /> </android.support.design.widget.TextInputLayout> 

В моей Activity :

  @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); EditText e1 = (EditText) findViewById(R.id.editText1); e1.setText("TEXT TEST 1"); } 

Кто-нибудь знает обходное решение?

Введите описание изображения здесь

В настоящее время единственный способ избежать этого поведения – добавить программный EditText .

  1. Создайте TextInputLayout без EditText . Программно или через инфляцию XML – не имеет значения, но она должна быть пустой.
  2. Создайте EditText и установите его текст на все, что вам нужно.
  3. Добавьте EditTExt в TextInputLayout .

Вот пример:

 TextInputLayout til = (TextInputLayout) findViewById(R.id.til); til.setHint(R.string.hint); EditText et = new EditText(getContext()); et.setText(value); til.addView(et); 

ОБНОВЛЕНО 21/08/2015 С ДИЗАЙН-БИБЛИОТЕКОЙ V23:

С помощью библиотеки поддержки дизайна v23 вы можете отключить анимацию :

Просто используйте метод setHintAnimationEnabled :

 textInputLayout.setHintAnimationEnabled(boolean) 

Вот проблема в Google Tracker .

Недавно я столкнулся с этой проблемой при использовании DialogFragment. Чтобы решить проблему, просто отключите анимацию подсказки, если у вас есть значение в поле перед установкой значения поля. Порядок важен.

Например,

 TextInputLayout layout = (TextInputLayout) findViewById(R.id.text_layout); TextInputEditText edit = (TextInputEditText) findViewById(R.id.text_edit); String fieldValue = "Something"; layout.setHintAnimationEnabled(fieldValue == null); edit.setText(fieldValue); 

Таким образом, макет не запускает анимацию при установке текста. Вы также можете следить за изменениями текста и снова включать его, когда поле пусто.