我基于计时器每隔0.5秒在TextView上设置一些文本。每次,当计时器运行并且设置了文本时,我在控制台中收到此警告消息。
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() {
mTimeText.setText("0:05"); // Hardcoded text
}
答案 0 :(得分:12)
回答我自己的问题。
注意我有两个TextView&#39; 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属性!
因此,我只是在我的java代码中以编程方式设置mTitleText.setSingleLine(true)
。这种方法并没有被弃用,所以我认为我是明确的。
至于为什么评论//mTimeText.setText("0:05");
阻止警告信息出现,我真的不知道。我很难熬那个。
答案 1 :(得分:2)
我通过将TextView的layout_height
配置从wrap_content
更改为match_parent
来解决了这个问题。定义固定的layout_height
是另一种解决方法。
例子:
android:layout_height="wrap_content"
或android:layout_height="20dp"
答案 2 :(得分:2)
这是Android中的一个错误,已标记为已修复,因此我们必须等待下一个补丁:https://issuetracker.google.com/issues/121092510