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"); } 

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

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

Solutions Collecting From Web of "TextInputLayout анимация перекрывает текст, когда текст установлен программно"

В настоящее время единственный способ избежать этого поведения – добавить программный 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); 

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