web-dev-qa-db-fra.com

Android TextView: Obtenir "W/StaticLayout: maxLineHeight ne doit pas être -1. MaxLines: 1 lineCount: 1" lors de la définition de texte

Je règle du texte sur un TextView toutes les 0,5 seconde en fonction d'un minuteur. À chaque fois que le minuteur s’exécute et que le texte est défini, ce message d’avertissement est envoyé dans ma console.

W/StaticLayout: maxLineHeight ne doit pas être -1. maxLines: 1 lineCount: 1

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

Code Java:

public void setProgress() {
    mTimeText.setText("0:05"); // Hardcoded text
}
16
mco

Répondre à ma propre question.

Notez que j’ai deux title_text et time_text..__ de TextView. Commenter //mTimeText.setText("0:05"); a résolu le problème du message d’avertissement envoyé par courrier indésirable, alors j’ai pensé que le problème devait faire quelque chose avec time_text, mais il ne l’a pas fait.

Cela avait à voir avec title_text. Remarquez comment je règle les propriétés Android:maxLines="1" et Android:ellipsize="end". Si le texte dépassait la limite maxLines et déclenchait les ellipses, le message d'avertissement s'afficherait. Supprimer la ligne Android:ellipsize="end" a résolu le problème. Cependant, j'ai besoin des ellipses, pour que cela ne fonctionne pas.

La seule autre solution que je pourrais trouver est de remplacer Android:maxLines="1" par Android:singleLine="true", mais cette propriété xml est obsolète!

Par conséquent, je viens de définir mTitleText.setSingleLine(true) par programme dans mon code Java. Cette méthode n'est pas obsolète donc je pense que je suis dans le clair.

Je ne sais pas trop pourquoi le commentaire //mTimeText.setText("0:05"); a empêché le message d'avertissement de s'afficher. Je suis stupéfait sur celui-là.

11
mco

Je l'ai résolu en modifiant la configuration layout_height de TextView de wrap_content à match_parent. Définir un layout_height fixe est un autre moyen de le résoudre.


Exemples:

Android:layout_height="wrap_content" ou Android:layout_height="20dp"

1
Jordao Serafim