Текст сообщения об ошибке для TextInputLayout обрезан - PullRequest
0 голосов
/ 29 ноября 2018

Эй, кто-нибудь знает, почему это (см. На картинке) происходит?Это происходит для Xiaomi MiA1, в то время как на Nokia 7.1 работает нормально.

Cutted of error hint

Мой макет просмотра XML

FrameLayout - root
 ScrollView
  RelativeLayout
   <com.google.android.material.textfield.TextInputLayout
                android:id="@+id/til_email"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/profile.EMAIL"
                android:theme="@style/TextInputLayoutTheme"
                android:margin="16dp"
                android:paddingBottom="8dp"
                app:layout_constraintTop_toBottomOf="@+id/phone_wrapper"
                >

                <com.google.android.material.textfield.TextInputEditText
                    android:id="@+id/email"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="textEmailAddress"
                    android:textSize="16sp"
                    android:textColor="@color/darkTextColor"
                    android:imeOptions="actionDone"
                    tools:text="Email"
                    />
            </com.google.android.material.textfield.TextInputLayout>

Я думаю, чторазмещение TextInputLayoutTheme здесь не имеет значения, так как я манипулирую только цветами представления

Ответы [ 5 ]

0 голосов
/ 14 августа 2019

Я решил проблему, сохранив и восстановив LayoutParams:

    final ViewGroup.LayoutParams params = textInputLayout.getLayoutParams();
    textInputLayout.setError(errorMessage);
    textInputLayout.setLayoutParams(params);
0 голосов
/ 02 апреля 2019

Текст сообщения об ошибке обрезается, если вы устанавливаете ошибку в TextInputLayout более одного раза.Поэтому каждый раз, когда вы устанавливаете текст сообщения об ошибке TextInputLayout, просто сначала установите его в null.

textInputLayout.setError(null); textInputLayout.setErrorEnabled(false);<br> textInputLayout.setError("Error Message");

0 голосов
/ 13 декабря 2018

Layout inspector preview of TextInputLayout

Views hierarchy

Инспектор макетов показывает, что даже если есть место для ошибки, он неНарисуй взгляд на все это.Все, что есть в LinearLayouts (и один простой FrameLayout), поэтому нет никакого способа, чтобы что-то перекрывало его, отступы установлены в 0, в реализации нет изменения высоты кода или чего-то подозрительного, поэтому я не знаю, что может бытьпричина такого поведения.

Хотя я нашел какое-то решение, которое работает.Вам нужно найти в TextInputLayout ошибку удержания вида (с идентификатором textinput_error) и добавить к ней небольшой отступ.Я сделал это, расширив TextInputLayout и добавив такой код в init.

val errorTV = findViewById<TextView>(R.id.textinput_error)
errorTV.updatePadding(top = 4)

Уже есть проблема с трекером - https://issuetracker.google.com/issues/116747167, поэтому давайте надеяться, что Google когда-нибудь исправит это.

0 голосов
/ 24 февраля 2019

Я знаю, что это не лучшее решение, но вы можете добавить \n к началу сообщения об ошибке.

Например, если ваша ошибка Error, просто измените ее на \nError.

Если вы хотите изменить размер \n, вы можете использовать:

String newLine = "\n";
String errorMessage = "Error";

SpannableString spannableErrorMessage = new SpannableString(newLine  + errorMessage );
spannableName.setSpan(new TextAppearanceSpan(activity, R.style.my_style),0,a.length(), 0);
spannableName.setSpan(new RelativeSizeSpan(2.0f), a.length(), a.length() + 1, 0);
0 голосов
/ 03 декабря 2018

Я решил проблему, увеличив размер шрифта ошибки до 14sp (orginal is 12sp)

<com.google.android.material.textfield.TextInputLayout
        [...] 
        app:errorTextAppearance="@style/MyProfile.Error">

<style name="MyProfile.Error" parent="TextAppearance.Design.Error">
        <item name="android:textSize">14sp</item>
</style>

Хотя, как сказал Шаббир Дхангот, я могу сказать, что настройка TIL.setErrorEnabled (true) может помочь для некоторых других.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...