Как получить подсказку Textinputlayout Android в несколько строк?

Я перепробовал много вариантов, доступных онлайн, но ни один из них, кажется, не работает.

Я использовал этот XML для этой цели.

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:hintTextAppearance="@style/TextLabel">

    <com.projects.fonts.RobotoEditText
        style="@style/EditText"
        android:hint="@string/description"
        android:singleLine="false"
        app:font="@string/roboto_regular" />

</android.support.design.widget.TextInputLayout>

Я также установил

<item name="android:singleLine">false</item>

как в TextLabel, так и в EditText. Но никто из них не работает.

3 ответа

Ты не можешь

TextInputLayout использования CollapsingTextLayout который измеряет намек как CharSequence:

mTextPaint.measureText(mTextToDraw, 0, mTextToDraw.length())

CharSequence не имеет понятия о строке, поэтому вы не можете добавить больше.


Это не совсем намек, если это так долго. Если вы все еще хотите отобразить его, рассмотрите возможность добавления отдельного TextView ниже / выше / выше и его анимация (если хотите / нужно).

Вы можете сделать это с помощью TextInputLayout и TextInputEditText.

В TextInputEditText установите подсказку, как обычно (android: hint = "Hint Text").

В TextInputLayout вы должны отключить подсказку, установив "app: hintEnabled =" false ".

Заметки:

Если вы оставите для hintEnabled значение true (по умолчанию true), подсказка будет однострочной и превратится в метку, когда пользователь коснется EditText, придав ему фокус.

Если вы измените hintEnabled на false, эта функция будет удалена, и EditText покажет подсказку с несколькими строками, как задумано. Он не превращается в ярлык и исчезает, когда пользователь фактически начинает печатать.

Пример кода ниже:

      <com.google.android.material.textfield.TextInputLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    app:hintEnabled="false"
                    app:boxBackgroundMode="none">

                    <com.google.android.material.textfield.TextInputEditText
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:hint="Your long hint"/>
                </com.google.android.material.textfield.TextInputLayout>

В отличие от ответа simas кажется, что есть обходной путь. Вы можете добиться ожидаемого поведения, установив подсказку программно в TextInputEdittext. Минус в том, что после этого плавающая метка не работает, и я считаю, что это не то, чего мы ожидаем от такой длинной подсказки.

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

Другие вопросы по тегам