当我 运行 我的应用程序时,为什么我的小部件没有正确定位?

How come my widgets aren't positioned properly when I run my app?

我是 Android Studio 的新手,如果这是一个愚蠢的问题,请提前致歉。我正在尝试制作一个简单的应用程序,当您按下按钮时文本会发生变化,但是每当我 运行 模拟器中的应用程序位置与 android 中显示的位置不同小部件设计。

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"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Change Text"
        android:textSize="20sp"
        tools:layout_editor_absoluteX="112dp"
        tools:layout_editor_absoluteY="399dp" />

    <TextView
        android:id="@+id/txt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Text"
        android:textColor="#000000"
        android:textSize="50sp"
        tools:layout_editor_absoluteX="158dp"
        tools:layout_editor_absoluteY="320dp" />
</androidx.constraintlayout.widget.ConstraintLayout>

如果有人能提供帮助,将不胜感激,在此先感谢!

您不应在小部件中使用工具 属性,而应使用约束

用此代码替换您的代码:

<?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"
    tools:context=".MainActivity">

<Button
    android:id="@+id/btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Change Text"
    android:textSize="20sp"
    android:layout_marginTop="22dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/txt" />

<TextView
    android:id="@+id/txt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Text"
    android:textColor="#000000"
    android:textSize="50sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>