Android 为什么不';当裕度相同时,这两个分量是否正好在彼此上方?

Android 为什么不';当裕度相同时,这两个分量是否正好在彼此上方?,android,android-layout,Android,Android Layout,我对Android编程非常陌生(第一天),所以我可能错过了一些非常明显的东西 在这种情况下,为什么“权重”TextView和它的EditText组件不完全在彼此之上?NumberPicker和“Reps”文本视图也是如此。据我所知,由于两个组件的宽度相同,并且边距也相同,所以它们应该正好位于彼此上方 供参考的XML:- <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLa

我对Android编程非常陌生(第一天),所以我可能错过了一些非常明显的东西

在这种情况下,为什么“权重”TextView和它的EditText组件不完全在彼此之上?NumberPicker和“Reps”文本视图也是如此。据我所知,由于两个组件的宽度相同,并且边距也相同,所以它们应该正好位于彼此上方

供参考的XML:-

<?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="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:background="@android:color/background_light"
    tools:context="host.abhi.rmcalc.MainActivity">

    <TextView
        android:id="@+id/noRepsHeading"
        android:layout_width="110dp"
        android:layout_height="45dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:gravity="center"
        android:text="Reps"
        android:textColor="@color/colorPrimaryDark"
        android:textSize="30sp"
        app:layout_constraintBottom_toTopOf="@+id/noReps"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/enteredWeightHeading"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/enteredWeight"
        android:layout_width="110dp"
        android:layout_height="107dp"
        android:layout_marginBottom="80dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="2dp"
        android:defaultFocusHighlightEnabled="true"
        android:ems="10"
        android:filterTouchesWhenObscured="false"
        android:fontFamily="@font/archivo_black"
        android:gravity="center"
        android:hint="00"
        android:inputType="textPersonName|numberDecimal"
        android:textSize="50sp"
        app:layout_constraintBottom_toTopOf="@+id/oneRepMax"
        app:layout_constraintEnd_toStartOf="@+id/noReps"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/enteredWeightHeading"
        tools:focusableInTouchMode="true" />

    <TextView
        android:id="@+id/oneRepMax"
        android:layout_width="391dp"
        android:layout_height="0dp"
        android:layout_marginBottom="150dp"
        android:layout_marginTop="8dp"
        android:background="@android:color/darker_gray"
        android:fontFamily="@font/archivo_black"
        android:gravity="center"
        android:textColor="?attr/colorPrimaryDark"
        android:textSize="100sp"
        android:visibility="invisible"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/oneRepMaxHeading" />

    <NumberPicker
        android:id="@+id/noReps"
        android:layout_width="110dp"
        android:layout_height="109dp"
        android:layout_marginBottom="78dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="2dp"
        app:layout_constraintBottom_toTopOf="@+id/oneRepMax"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/enteredWeight"
        app:layout_constraintTop_toBottomOf="@+id/noRepsHeading" />

    <TextView
        android:id="@+id/enteredWeightHeading"
        android:layout_width="110dp"
        android:layout_height="45dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:gravity="center"
        android:text="Weight"
        android:textColor="@color/colorPrimaryDark"
        android:textSize="30sp"
        app:layout_constraintBottom_toTopOf="@+id/enteredWeight"
        app:layout_constraintEnd_toStartOf="@+id/noRepsHeading"
        app:layout_constraintHorizontal_chainStyle="spread_inside"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/oneRepMaxHeading"
        android:layout_width="283dp"
        android:layout_height="53dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="180dp"
        android:gravity="center"
        android:text="1RM Estimated"
        android:textColor="@color/colorPrimaryDark"
        android:textSize="30sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

这就是罪魁祸首

<TextView
    android:id="@+id/enteredWeightHeading"
    android:layout_width="110dp"
    android:layout_height="45dp"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginStart="8dp"
    android:gravity="center"
    android:text="Weight"
    android:textColor="@color/colorPrimaryDark"
    android:textSize="30sp"
    app:layout_constraintBottom_toTopOf="@+id/enteredWeight"
    app:layout_constraintEnd_toStartOf="@+id/noRepsHeading"
    app:layout_constraintHorizontal_chainStyle="spread_inside" <!--PROBLEM HERE-->
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />
希望这有帮助

编辑

  • 排列:视图均匀分布(在考虑了边距之后)。这是默认设置
  • 内部展开:第一个和最后一个视图附加到链两端的约束上,其余视图均匀分布
  • 加权:当链设置为“排列”或“内部排列”时,可以通过将一个或多个视图设置为“匹配约束”(0dp)来填充剩余空间。默认情况下,空间在设置为“匹配约束”的每个视图之间均匀分布,但可以使用“布局约束”“垂直权重”和“布局约束”“垂直权重”属性为每个视图指定重要权重。如果您熟悉线性布局中的布局和权重,则其工作方式相同。因此,权重值最高的视图获得最大的空间量;具有相同权重的视图获得相同的空间量
  • 打包:视图打包在一起(在考虑页边距后)。然后,可以通过更改链的头视图偏移来调整整个链的偏移(左/右或上/下)

抱歉,我不理解术语“彼此上方”“权重”TextView的中心与下面的EditText的中心不一致@WebInsightapp:layout_constraintTop_toBottomOf=“@+id/enteredWeightHeading”在第1版文本中是错误的。两者都应该是顶部而不是顶部和顶部bottom@WebInsight谢谢你的回复。但是,目前还不清楚到底是什么解决了这个问题。问题是您正在将第1个编辑文本的顶部与第1个文本视图的底部对齐。它的行为完全符合书面规定。请尝试将第一版文本的顶部与第一版文本的底部对齐。谢谢您花时间回答@阿吉尔。
<TextView
    android:id="@+id/enteredWeightHeading"
    android:layout_width="110dp"
    android:layout_height="45dp"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginStart="8dp"
    android:gravity="center"
    android:text="Weight"
    android:textColor="@color/colorPrimaryDark"
    android:textSize="30sp"
    app:layout_constraintBottom_toTopOf="@+id/enteredWeight"
    app:layout_constraintEnd_toStartOf="@+id/noRepsHeading"
    app:layout_constraintHorizontal_chainStyle="spread"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />