app:layout_marginBottom与android约束布局不兼容

时间:2017-07-05 16:15:34

标签: android margin android-constraintlayout

以下layout_marginBottom无法正常工作吗? 但是,如果我在第二个视图上使用layout_marginTop,它确实可以正常工作

<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ade4ad">
    <TextView
        android:id="@+id/first"
        android:layout_width="90dp"
        android:layout_height="40dp"
        app:layout_marginBottom="10dp"
        android:background="#000"/>
    <TextView
        android:id="@+id/second"
        android:layout_width="90dp"
        android:layout_height="40dp"
        android:background="#fff"
        app:layout_constraintTop_toBottomOf="@+id/first"/>
</android.support.constraint.ConstraintLayout>

4 个答案:

答案 0 :(得分:15)

为了

android:layout_marginBottom="20dp" 

运作良好,你应该使用

app:layout_constraintBottom_toBottomOf="parent"

答案 1 :(得分:1)

你可以使用这个技巧,创建一个空格,与父底部对齐

<Space
   android:id="@+id/space"
   android:layout_width="wrap_content"
   android:layout_height="80dp"
   app:layout_constraintBottom_toBottomOf="parent"
   app:layout_constraintEnd_toEndOf="parent"
   app:layout_constraintStart_toStartOf="parent" />

并在空间顶部对齐您的视图       应用程式:layout_constraintBottom_toTopOf = “@ + ID /空格” 像这样

<TextView
    android:id="@+id/howNext"
    style="@style/white_action_btn_no_border"
    android:layout_width="344dp"
    android:layout_height="60dp"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginStart="8dp"
    android:text="@string/got_it_next"
    app:layout_constraintBottom_toTopOf="@+id/space"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent" />

答案 2 :(得分:1)

仅在以下情况下布局上/下边距有效:

  1. 所有约束都具有相同的依赖性,即“ layout_constraintBottom_toXXXXX”或“ layout_constraintTop_toXXXXX”。
  2. 必须设置方向的最后一个约束条件。

对于您的情况,必须为链中的每个视图设置“ layout_constraintBottom_toXXXXX”,最后一个视图的底部应设置为父视图。

<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#ade4ad">
    <TextView
        android:id="@+id/first"
        android:layout_width="90dp"
        android:layout_height="40dp"
        app:layout_marginBottom="10dp"
        app:layout_constraintBottom_toTopOf="@+id/second"
        android:background="#000"/>
    <TextView
        android:id="@+id/second"
        android:layout_width="90dp"
        android:layout_height="40dp"
        app:layout_marginBottom="10dp"
        app:layout_constraintBottom_toTopOf="@+id/third"
        android:background="#fff"/>
    <TextView
        android:id="@+id/third"
        android:layout_width="90dp"
        android:layout_height="40dp"
        android:background="#fff"
        app:layout_constraintBottom_toBottomOf="parent"/>
</android.support.constraint.ConstraintLayout>

此外,不需要反向依赖,除非您希望“ layout_marginTop”起作用。

答案 3 :(得分:-2)

这不是LinearLayoutRelativeLayout,而是ConstraintLayout,因此您必须提供LeftRightBottom,{{1 }} Top到相关布局,在您的情况下,您必须先将Constraint约束TextView约束Bottom_Top秒。所以你可以获得两个TextView之间的保证金。

您的布局应如下所示。

TextView