TextInputLayout animation overlaps the text when the text is set programmatically

我与影子孤独终老i 提交于 2019-11-30 05:08:09

Currently the only way to avoid this behavior is to add the EditText programmatically.

  1. Create a TextInputLayout without the EditText. Programmatically or via XML inflation - doesn't matter, but it has to be empty.
  2. Create the EditText and set its text to whatever you need.
  3. Add the EditTExt to the TextInputLayout.

Here's an example:

TextInputLayout til = (TextInputLayout) findViewById(R.id.til);
til.setHint(R.string.hint);

EditText et = new EditText(getContext());
et.setText(value);

til.addView(et);

UPDATED 21/08/2015 WITH DESIGN LIBRARY V23:

With the design support library v23 you can disable the animation:

Just use the setHintAnimationEnabled method:

textInputLayout.setHintAnimationEnabled(boolean)

Here the issue on Google Tracker.

I ran into this issue recently while using DialogFragment. To solve, simply disable the hint animation if you have a value in the field before you set the field value. The order is important.

For example,

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

This way the layout does not initiate the animation when the text is set. You can also watch for text changes and enable it again when the field is empty.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!