TextInputLayout animation overlaps the text when the text is set programmatically
L

4

17

I am using TextInputLayout with the design support library 22.2.1.

I set the value of the EditText programmatically, and when the screen appears, I can see that the hint of the TextInputLayout overlaps the text inside, before moving in the floating position.

Here a simple layout:

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

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

Does anyone know a workaround?

enter image description here

Leda answered 21/7, 2015 at 16:1 Comment(0)
L
18

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.

Leda answered 24/7, 2015 at 14:4 Comment(2)
Very helpful, thank you. Are you aware of a method that would get the hint working without using match_parent in the width attributes? So that the field width would match the hint size if empty & not focusedIsthmian
@Gabriele Mariotti does textInputLayout.setHintAnimationEnabled(boolean) works in v25??Laure
Y
4

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.

Yoohoo answered 8/3, 2017 at 2:44 Comment(0)
D
2

You can directly specify in the XML for TextInputLayout :

 app:hintAnimationEnabled="false"
Dipsomaniac answered 23/10, 2019 at 14:7 Comment(0)
B
0
TextInputLayout seller_email = (TextInputLayout) findViewById(R.id.existing_seller_email_ET);

seller_email.getEditText().setText("Any text");

Hope this will help you

Bombard answered 6/12, 2020 at 8:36 Comment(1)
Hi and welcome to Stack Overflow! Please take the tour and have a look at this help center article with info on how to format code. Thanks for contributing an answer but can you also add an explanation on how your code solves the issue?Mistrot

© 2022 - 2024 — McMap. All rights reserved.