Как получить подсказку 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, то она не будет работать.