为什么 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 = " "
const val NON_BREAKABLE_SPACE_UNICODE = '\u00A0'
...
}
我已将 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 = " "
const val NON_BREAKABLE_SPACE_UNICODE = '\u00A0'
...
}