我尝试使用 ConstraintLayout
实现这个简单的布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tvTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:text="Description"
app:layout_constraintBottom_toTopOf="@+id/space"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="spread_inside" />
<View
android:id="@+id/space"
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:background="@android:color/darker_gray"
app:layout_constraintBottom_toTopOf="@+id/tvText"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvTitle" />
<TextView
android:id="@+id/tvText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/space" />
</android.support.constraint.ConstraintLayout>
此布局 id 然后在 Dialog
中使用,如下所示:
val dialog = Dialog(_activity)
dialog.setContentView(R.layout.dialog)
dialog.show()
这是预览呈现的内容:
如您所见,第二个 TextView
不遵守 16dp 边距,而对于具有相同参数的第一个 TextView
似乎没问题。
也不是 View
似乎粘在父级的右边框上。
尽管第一个 TextView
似乎占用了右边的 16 dp,但我们可以在第二个预览中看到它在右边一点。
我执行的时候,确认内容向右偏移了。 为什么?
最佳答案
您应该使用 "0dp"
的 width= 来强制 View 将自身锚定到其约束,或者结合使用 "wrap_content"
的宽度app:layout_constrainedWidth="true"
,让 View 根据其内容自行调整大小,同时也遵守约束条件。
关于android - 为什么我的布局不遵守约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49323314/