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
}
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à.
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"