Android TextView:设置文本时获取“W / StaticLayout:maxLineHeight不应为-1.maxLines:1 lineCount:1”

时间:2018-03-21 20:40:17

标签: android textview

我基于计时器每隔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
}

3 个答案:

答案 0 :(得分:12)

回答我自己的问题。

注意我有两个TextView&#39; title_texttime_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