多行按钮文本忽略按钮边距的问题

Issues with multiline button texts ignoring button margins

基本上我有一个带有很长字符串的按钮,它会导致换行。该按钮具有左右边距,但是由于该按钮占据了父级的整个宽度,因此多行按钮文本会忽略这些边距。

一个明显的解决方案是将布局宽度设置为 0dp,但这会强制静态宽度,这意味着对于较短的按钮文本,按钮不再被包裹。

有没有一个很好的解决方案如何保持 wrap_content 的宽度但仍然不忽略边距?

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android">

<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="32dp"
        android:layout_marginRight="32dp"
        android:text="@string/longstring"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>

在按钮中添加以下行 xml 以便按钮尊重边距

app:layout_constrainedWidth="true"

输出

最简单的解决方案是您必须在按钮的字符串中使用 /n 以使按钮文本不扩展
例如"This is a string then /n It will be on the next line"

这样我认为你的按钮不会忽略边距并显示里面的文本

<Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="32dp"
        android:layout_marginRight="32dp"
        android:text="@string/longstring"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constrainedWidth="true" />


</androidx.constraintlayout.widget.ConstraintLayout>