ConstraintLayout 不尊重层次结构
ConstrainLayout not respecting the hierarchy
我有这个布局
....................
<CheckBox
android:id="@+id/cb_remember_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textinput2"
android:text="@string/keep_login"
android:textColor="@android:color/holo_red_dark"
android:textSize="18sp"
android:layout_marginTop="14dp"
app:layout_constraintTop_toBottomOf="@+id/textinput2"
app:layout_constraintBottom_toTopOf="@+id/btn_signin_login" />
<Button
android:id="@+id/btn_signin_login"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@+id/cb_remember_login"
android:backgroundTint="@color/colorAccent"
android:minHeight="75dp"
android:text="@string/signin"
android:textColor="@android:color/background_light"
android:textSize="30sp" android:visibility="visible"
android:layout_marginTop="36dp"
app:layout_constraintTop_toBottomOf="@+id/cb_remember_login"
app:layout_constraintBottom_toTopOf="@+id/tv_forgot_login"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"/>
<include
layout="@layout/view_circle_progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="@+id/btn_signin_login"
app:layout_constraintBottom_toBottomOf="btn_signin_login"
app:layout_constraintLeft_toLeftOf="@+id/btn_signin_login"
app:layout_constraintRight_toRightOf="@+id/btn_signin_login" />
<TextView
android:id="@+id/tv_forgot_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_signin_login"
android:text="@string/forgot_pass"
android:textAlignment="center"
android:textColor="@android:color/holo_red_dark"
android:textSize="18sp"
android:layout_marginTop="14dp"
app:layout_constraintTop_toBottomOf="@+id/btn_signin_login"
app:layout_constraintBottom_toTopOf="@+id/tv_copyrights_login"
tools:layout_editor_absoluteX="0dp" />
...........][1]][1]
这里是view_circle_progress.xml
<ProgressBar
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:indeterminateTint="@color/red">
</ProgressBar>
您可以看到我包含的布局位于按钮之后,但在图片中您可以看到它实际上位于按钮下方。请帮忙解决。此外,除了包含的布局外,所有视图都在一个链中。
转到您的 xml
,单击设计。在左上角,您会看到一个类似于蓝图的图标。单击它,您将获得作为蓝图的布局。然后点击你想要的元素,你会看到四面都有四个点。单击上方的点并将其拖动到上方 bar
(menu
等)。这样你就可以连接它并且它会留在原地。如果你想在你的属性上方设置偏移量,你会看到一个框代表项目及其约束,只需输入你想要的距离,你就会有你的偏移量。
问题出在 Android 引入了 5.0 提升。按钮有一个默认高度,这就是它总是显示在顶部的原因。为我的包含布局设置高程值解决了这个问题。
....................
<CheckBox
android:id="@+id/cb_remember_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textinput2"
android:text="@string/keep_login"
android:textColor="@android:color/holo_red_dark"
android:textSize="18sp"
android:layout_marginTop="14dp"
app:layout_constraintTop_toBottomOf="@+id/textinput2"
app:layout_constraintBottom_toTopOf="@+id/btn_signin_login" />
<Button
android:id="@+id/btn_signin_login"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@+id/cb_remember_login"
android:backgroundTint="@color/colorAccent"
android:minHeight="75dp"
android:text="@string/signin"
android:textColor="@android:color/background_light"
android:textSize="30sp" android:visibility="visible"
android:layout_marginTop="36dp"
app:layout_constraintTop_toBottomOf="@+id/cb_remember_login"
app:layout_constraintBottom_toTopOf="@+id/tv_forgot_login"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"/>
<include
layout="@layout/view_circle_progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="@+id/btn_signin_login"
app:layout_constraintBottom_toBottomOf="btn_signin_login"
app:layout_constraintLeft_toLeftOf="@+id/btn_signin_login"
app:layout_constraintRight_toRightOf="@+id/btn_signin_login" />
<TextView
android:id="@+id/tv_forgot_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_signin_login"
android:text="@string/forgot_pass"
android:textAlignment="center"
android:textColor="@android:color/holo_red_dark"
android:textSize="18sp"
android:layout_marginTop="14dp"
app:layout_constraintTop_toBottomOf="@+id/btn_signin_login"
app:layout_constraintBottom_toTopOf="@+id/tv_copyrights_login"
tools:layout_editor_absoluteX="0dp" />
...........][1]][1]
这里是view_circle_progress.xml
<ProgressBar
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:indeterminateTint="@color/red">
</ProgressBar>
您可以看到我包含的布局位于按钮之后,但在图片中您可以看到它实际上位于按钮下方。请帮忙解决。此外,除了包含的布局外,所有视图都在一个链中。
转到您的 xml
,单击设计。在左上角,您会看到一个类似于蓝图的图标。单击它,您将获得作为蓝图的布局。然后点击你想要的元素,你会看到四面都有四个点。单击上方的点并将其拖动到上方 bar
(menu
等)。这样你就可以连接它并且它会留在原地。如果你想在你的属性上方设置偏移量,你会看到一个框代表项目及其约束,只需输入你想要的距离,你就会有你的偏移量。
问题出在 Android 引入了 5.0 提升。按钮有一个默认高度,这就是它总是显示在顶部的原因。为我的包含布局设置高程值解决了这个问题。