Android TextView: получение "W/StaticLayout: maxLineHeight не должно быть -1. MaxLines: 1 строкаCount: 1" при настройке текста

Я устанавливаю некоторый текст в TextView каждые 0,5 секунды на основе таймера. Каждый раз, когда таймер работает и текст установлен, я получаю это предупреждение, спам в моей консоли.

W/StaticLayout: maxLineHeight не должно быть -1. maxLines: 1 lineCount: 1

XML-код:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/title_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="12dp"
        android:layout_marginRight="12dp"
        android:layout_marginTop="12dp"
        android:ellipsize="end"
        android:maxLines="1"
        android:textColor="@color/white"/>

    <TextView
        android:id="@+id/time_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingEnd="4dp"
        android:paddingStart="12dp"
        android:textColor="@color/white"
        android:textSize="12sp"
        tools:text="0:00" />
</RelativeLayout>

Java-код:

public void setProgress() {
    // setProgress() called every 0.5 seconds
    // Hardcoded text
    mTimeText.setText("0:05");
}

Ответ 1

Отвечая на мой собственный вопрос.

Обратите внимание, что у меня есть два TextView title_text и time_text. Комментируя //mTimeText.setText("0:05");, проблема в том, что сообщение об ошибке было отправлено спамом, поэтому я подумал, что проблема должна была что-то сделать с time_text, но это не так.

Это связано с title_text. Обратите внимание, как я установил свойства android:maxLines="1" и android:ellipsize="end". Если бы у меня был текст, который переполнял бы предел maxLines и запускал эллипсы, тогда я получил бы предупреждающее сообщение. Удаление строки android:ellipsize="end" решило проблему. Однако мне нужны эллипсы, чтобы они не работали.

Единственное другое решение, которое я смог найти, заключается в замене android:maxLines="1" на android:singleLine="true", однако свойство xml устарело!

Поэтому я просто устанавливаю mTitleText.setSingleLine(true) программно в свой java-код. Этот метод не устарел, поэтому я думаю, что я в явном виде.

Что касается того, почему комментирование //mTimeText.setText("0:05"); предотвратило появление предупреждающего сообщения, я действительно не знаю. Я в тупике на этом.

Ответ 2

Я решил эту проблему, изменив конфигурацию TextView layout_height с wrap_content на match_parent. Определение фиксированной layout_height - это еще один способ ее решения.


Примеры:

android:layout_height="wrap_content" или android:layout_height="20dp"

Ответ 3

Это ошибка в Android, которая помечена как исправленная, поэтому нам придется подождать следующего патча: https://issuetracker.google.com/issues/121092510