元素将无法在Constraintlayout Android Studio中正确居中

人生必须的知识就是引人向光明方面的明灯。这篇文章主要讲述元素将无法在Constraintlayout Android Studio中正确居中相关的知识,希望能为你提供帮助。
我有这样一个闪屏:

元素将无法在Constraintlayout Android Studio中正确居中

文章图片

但如果我打开我的应用程序,它将显示如下:
元素将无法在Constraintlayout Android Studio中正确居中

文章图片

这是我的XML布局:
< ?xml version="1.0" encoding="utf-8"?> < androidx.constraintlayout.widget.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:background="@android:color/holo_red_light" tools:context=".SplashScreen"> < ImageView android:id="@+id/splash_icon" android:layout_width="200dp" android:layout_height="200dp" android:layout_marginTop="160dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.0" app:srcCompat="@mipmap/ic_concas_icon" /> < TextView android:id="@+id/splash_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="28dp" android:text="GO Tools" android:textColor="@android:color/white" android:textSize="48sp" android:textStyle="bold" app:layout_constraintEnd_toEndOf="@+id/splash_icon" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="@+id/splash_icon" app:layout_constraintTop_toBottomOf="@+id/splash_icon" /> < ProgressBar android:id="@+id/splash_progress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="136dp" app:layout_constraintEnd_toEndOf="@+id/splash_icon" app:layout_constraintHorizontal_bias="0.506" app:layout_constraintStart_toStartOf="@+id/splash_icon" app:layout_constraintTop_toBottomOf="@+id/splash_icon" /> < TextView android:id="@+id/splash_status" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="204dp" android:text="STATUS" android:textAlignment="center" android:textColor="@android:color/white" android:textSize="18sp" android:textStyle="bold" app:layout_constraintEnd_toEndOf="@+id/splash_icon" app:layout_constraintHorizontal_bias="0.508" app:layout_constraintStart_toStartOf="@+id/splash_icon" app:layout_constraintTop_toBottomOf="@+id/splash_icon" />


我需要像Android Studio预览一样正确放置元素但是如果我启动我的应用程序仍然无法正常工作。有人知道怎么做吗?非常感谢!
编辑:图像将无法加载,但它已正确设置。
答案看起来你的布局还可以,但是如果你想让你的图像更多地显示在屏幕的顶部,你需要更改它,现在你要告诉你的图像居中于屏幕的中间,这样你所有的其他视图将放置在低于您的图像。一个好的解决方案是添加指南并将图像限制在指南而不是屏幕的顶部(这样您的图像将放置得更高,它将改变您的布局外观)例如:
< androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent"> < ImageView android:id="@+id/splash_icon" android:layout_width="200dp" android:layout_height="200dp" android:layout_marginTop="8dp" android:background="@color/buttonColor" app:layout_constraintBottom_toTopOf="@+id/guideline3" app:layout_constraintHorizontal_bias="0.488" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="@+id/guideline3" /> < TextView android:id="@+id/splash_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="28dp" android:layout_marginBottom="8dp" android:background="@color/buttonColor" android:text="GO Tools" android:textColor="@android:color/white" android:textSize="48sp" android:textStyle="bold" app:layout_constraintBottom_toTopOf="@+id/splash_progress" app:layout_constraintEnd_toEndOf="@+id/splash_icon" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="@+id/splash_icon" app:layout_constraintTop_toBottomOf="@+id/splash_icon" /> < ProgressBar android:id="@+id/splash_progress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="136dp" android:layout_marginBottom="8dp" android:background="@color/buttonColor" app:layout_constraintBottom_toTopOf="@+id/splash_status" app:layout_constraintEnd_toEndOf="@+id/splash_icon" app:layout_constraintHorizontal_bias="0.506" app:layout_constraintStart_toStartOf="@+id/splash_icon" app:layout_constraintTop_toBottomOf="@+id/splash_icon" /> < TextView android:id="@+id/splash_status" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="204dp" android:layout_marginBottom="8dp" android:background="@color/buttonColor" android:text="STATUS" android:textAlignment="center" android:textColor="@android:color/white" android:textSize="18sp" android:textStyle="bold" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="@+id/splash_icon" app:layout_constraintHorizontal_bias="0.508" app:layout_constraintStart_toStartOf="@+id/splash_icon" app:layout_constraintTop_toBottomOf="@+id/splash_icon" /> < androidx.constraintlayout.widget.Guideline android:id="@+id/guideline3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.3"/> < /androidx.constraintlayout.widget.ConstraintLayout>

编辑:这可能适用于您的手机但我只是注意到您使用固定大小的视图 - 尽量避免这种情况,因为不同的手机有不同的手机大小
另一答案您的布局过于依赖于屏幕的大小,通过将视图相互约束并依赖各种边距和垂直偏差使其在设计器中工作。因此,当您移动到另一个屏幕大小时,布局不会按您想要的方式工作。
【元素将无法在Constraintlayout Android Studio中正确居中】请查看ConstraintLayout chains,了解如何对小部件进行分组,使其在所有屏幕尺寸中居中。我认为CHAIN_PACKED链是你需要的。

    推荐阅读