android - 为什么我的布局不遵守约束?

标签 android android-constraintlayout

我尝试使用 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()

这是预览呈现的内容:

preview

preview2

如您所见,第二个 TextView 不遵守 16dp 边距,而对于具有相同参数的第一个 TextView 似乎没问题。 也不是 View 似乎粘在父级的右边框上。 尽管第一个 TextView 似乎占用了右边的 16 dp,但我们可以在第二个预览中看到它在右边一点。

我执行的时候,确认内容向右偏移了。 为什么?

real view

最佳答案

您应该使用 "0dp" 的 width= 来强制 View 将自身锚定到其约束,或者结合使用 "wrap_content" 的宽度app:layout_constrainedWidth="true",让 View 根据其内容自行调整大小,同时也遵守约束条件。

关于android - 为什么我的布局不遵守约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49323314/

相关文章:

android - 如何保存原始 fragment 的内容,同时去其他 fragment 并返回原始 fragment ?

Android 处理 IntentService onStop 事件

android - 缺少 Constraint-Layout alpha7 ConstraintCenterX/Y 属性

android - NestedScrollView中的ConstraintLayout(带有RecyclerView)

android - ConstratintLayout : How to center a view according to another view, 垂直

android - 单个 LinearLayout 与单个 ConstraintLayout

java - 有没有更好的方法可以在不编写自己的位置请求服务的情况下准确使用地理围栏?

java - Android 上的 Fragment 膨胀问题

java - 用于响应式 Java Web 应用程序开发的平台、框架或工具

Android Studio 下载约束布局失败