为什么 android:breakStrategy 在 TextView 中不工作?

why android:breakStrategy not working in TextView?

我已将 breakStrategy 设置为 simple,但文本视图运行不正常。这是我得到的结果:

这是我使用的代码:

<TextView
            android:id="@+id/activity_list_item_notes"
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:layout_marginStart="@dimen/row_top_padding_12"
            android:layout_marginTop="@dimen/margin_xsmall"
            android:layout_marginEnd="@dimen/margin_xsmall"
            android:gravity="center_vertical|start"
            android:visibility="gone"
            tools:visibility="visible"
            android:breakStrategy="simple"
            android:textAlignment="gravity"
            android:textDirection="locale"
            app:layout_constrainedWidth="true"
            app:layout_constraintEnd_toStartOf="@id/amount_and_action_barrier"
            app:layout_constraintHorizontal_bias="0"
            app:layout_constraintStart_toEndOf="@id/activity_list_item_contact_image"
            app:layout_constraintTop_toBottomOf="@+id/activity_list_item_date"
            tools:targetApi="m" />

我希望文本以这样的方式显示,第一行应填满文本视图的整个宽度。我的意思是 break 这个词本身应该从第一行开始。如果它在两条线之间中断和分裂并不重要。 我正在 API 级别 30 的设备上进行测试。

我认为最简单的解决方案是将文本中的空格替换为 non-breaking spaces。在我的项目中,我为此具有 kotlin 扩展功能:

fun String?.useNonBreakingSpace() = this.orEmpty()
    .replace(
        Constants.REGULAR_SPACE_CHARACTER,
        Constants.NON_BREAKABLE_SPACE_UNICODE
    )

object Constants {

    ...

    const val REGULAR_SPACE_CHARACTER = ' '
    const val REGULAR_SPACE = REGULAR_SPACE_CHARACTER.toString()
    const val NON_BREAKABLE_SPACE_HTML = "&#160;"
    const val NON_BREAKABLE_SPACE_UNICODE = '\u00A0'

    ...
}