约束布局按钮用重量包裹文本
Constraint Layout buttons wrap text with weight
我有一个带有 2 个文本按钮的 ConstraintLayout
容器。设置 android:ellipsize="end"
和 android:maxLines="1"
.
下图描述了我要完成的工作。如果第一个按钮的文本很长,它应该占据 60% space,如果需要,第二个按钮可以占据其余部分。
不是直接的答案,但这可能对您有所帮助。
这可以通过 PercentRelativeLayout
实现,但是它已经被弃用了。幸运的是,它可以使用 ConstraintLayout
使用以下内容进行复制。
app:layout_constraintGuide_percent=".15"
app:layout_widthPercent="50%"
app:layout_heightPercent="50%"
有关详细指南,请查看此 documentation
使用 Guideline
就是答案:
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<Button
android:id="@+id/button1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toStartOf="@id/actionButtonEndGuideline"
app:layout_constraintHorizontal_bias="0.001"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintWidth_default="wrap"
tools:text="Button 1 text" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/actionButtonEndGuideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.6" />
<Button
android:id="@+id/button2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
app:layout_constrainedWidth="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toEndOf="@id/button1"
app:layout_constraintTop_toTopOf="@id/button1"
app:layout_constraintWidth_default="wrap"
tools:text="Button 2 text" />
</androidx.constraintlayout.widget.ConstraintLayout>
注意第一个按钮上的 app:layout_constraintHorizontal_bias="0.001"
。我花了很多时间试图让它与 app:layout_constraintHorizontal_bias="0"
一起工作,直到我 运行 进入这个答案 layout_constrainedWidth not working properly.
这是在撰写本文 (1.1.3) 时最新稳定版本的 constraintlayout 依赖项中的一个错误,显然该修复程序在测试版 (2.0.0-beta8) 中可用
我有一个带有 2 个文本按钮的 ConstraintLayout
容器。设置 android:ellipsize="end"
和 android:maxLines="1"
.
下图描述了我要完成的工作。如果第一个按钮的文本很长,它应该占据 60% space,如果需要,第二个按钮可以占据其余部分。
不是直接的答案,但这可能对您有所帮助。
这可以通过 PercentRelativeLayout
实现,但是它已经被弃用了。幸运的是,它可以使用 ConstraintLayout
使用以下内容进行复制。
app:layout_constraintGuide_percent=".15"
app:layout_widthPercent="50%"
app:layout_heightPercent="50%"
有关详细指南,请查看此 documentation
使用 Guideline
就是答案:
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<Button
android:id="@+id/button1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toStartOf="@id/actionButtonEndGuideline"
app:layout_constraintHorizontal_bias="0.001"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintWidth_default="wrap"
tools:text="Button 1 text" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/actionButtonEndGuideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.6" />
<Button
android:id="@+id/button2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
app:layout_constrainedWidth="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toEndOf="@id/button1"
app:layout_constraintTop_toTopOf="@id/button1"
app:layout_constraintWidth_default="wrap"
tools:text="Button 2 text" />
</androidx.constraintlayout.widget.ConstraintLayout>
注意第一个按钮上的 app:layout_constraintHorizontal_bias="0.001"
。我花了很多时间试图让它与 app:layout_constraintHorizontal_bias="0"
一起工作,直到我 运行 进入这个答案 layout_constrainedWidth not working properly.
这是在撰写本文 (1.1.3) 时最新稳定版本的 constraintlayout 依赖项中的一个错误,显然该修复程序在测试版 (2.0.0-beta8) 中可用