Android 在仿真器中改变位置的小部件

Android 在仿真器中改变位置的小部件,android,android-studio,android-emulator,Android,Android Studio,Android Emulator,每当我在Emulator上运行这个程序时,小部件的位置都会发生变化,我试图改变Emulator、布局的大小(用于预览的设备),但这并没有什么帮助。请帮帮我。 我得到的一个解决方案是减小小部件的大小,并将小部件安排在布局的顶部,但这非常耗时。此外,任何放置在布局底部的小部件都不会显示在模拟器中 布局 仿真器 XML文件 <?xml version="1.0" encoding="utf-8"?> <androidx.constraint

每当我在Emulator上运行这个程序时,小部件的位置都会发生变化,我试图改变Emulator、布局的大小(用于预览的设备),但这并没有什么帮助。请帮帮我。 我得到的一个解决方案是减小小部件的大小,并将小部件安排在布局的顶部,但这非常耗时。此外,任何放置在布局底部的小部件都不会显示在模拟器中

布局

仿真器

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=".button">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="1.0">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <TextView
                android:id="@+id/addition"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_alignParentEnd="true"
                android:layout_marginTop="76dp"
                android:layout_marginEnd="116dp"
                android:background="#D2F0FD"
                android:padding="15dp"
                android:text="10 + 5"
                android:textColor="#000000"
                android:textSize="30dp"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent" />

            <TextView
                android:id="@+id/scoreBoard"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_alignParentEnd="true"
                android:layout_marginTop="23dp"
                android:layout_marginEnd="273dp"
                android:background="#F44336"
                android:padding="10dp"
                android:text="0/0"
                android:textSize="25dp" />

            <TextView
                android:id="@+id/result"
                android:layout_width="183dp"
                android:layout_height="61dp"
                android:layout_alignParentTop="true"
                android:layout_alignParentEnd="true"
                android:layout_alignParentBottom="true"
                android:layout_marginTop="487dp"
                android:layout_marginEnd="49dp"
                android:layout_marginBottom="92dp"
                android:padding="5dp"
                android:text="result"
                android:textSize="30dp" />

            <Button
                android:id="@+id/play"
                android:layout_width="127dp"
                android:layout_height="64dp"
                android:layout_marginStart="150dp"
                android:layout_marginTop="-417dp"
                android:layout_marginEnd="133dp"
                android:layout_marginBottom="528dp"
                android:onClick="playAgain"
                android:text="Play Again!"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent" />

            <TextView
                android:id="@+id/time"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_alignParentEnd="true"
                android:layout_marginStart="18dp"
                android:layout_marginTop="23dp"
                android:layout_marginEnd="26dp"
                android:background="#FF9800"
                android:padding="10dp"
                android:text="30s"
                android:textSize="25dp" />

            <androidx.gridlayout.widget.GridLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_alignParentEnd="true"
                android:layout_alignParentBottom="true"
                android:layout_marginTop="167dp"
                android:layout_marginEnd="0dp"
                android:layout_marginBottom="182dp"
                app:columnCount="2"
                app:rowCount="2">

                <Button
                    android:id="@+id/button2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="#2196F3"
                    android:onClick="chosAns"
                    android:tag="1"
                    android:text="Button"
                    android:textSize="30dp"
                    app:layout_column="0"
                    app:layout_columnWeight="1"
                    app:layout_gravity="fill"
                    app:layout_row="0"
                    app:layout_rowWeight="1" />

                <Button
                    android:id="@+id/button3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="#E80909"
                    android:onClick="chosAns"
                    android:tag="2"
                    android:text="Button"
                    android:textSize="30dp"
                    app:layout_column="1"
                    app:layout_columnWeight="1"
                    app:layout_gravity="fill"
                    app:layout_row="0"
                    app:layout_rowWeight="1" />

                <Button
                    android:id="@+id/button4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="#62F806"
                    android:onClick="chosAns"
                    android:tag="3"
                    android:text="Button"
                    android:textSize="30dp"
                    app:layout_column="0"
                    app:layout_columnWeight="1"
                    app:layout_gravity="fill"
                    app:layout_row="1"
                    app:layout_rowWeight="1" />

                <Button
                    android:id="@+id/button5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="#8448E4"
                    android:onClick="chosAns"
                    android:tag="4"
                    android:text="Button"
                    android:textSize="30dp"
                    app:layout_column="1"
                    app:layout_columnWeight="1"
                    app:layout_gravity="fill"
                    app:layout_row="1"
                    app:layout_rowWeight="1" />
            </androidx.gridlayout.widget.GridLayout>

            <Button
                android:id="@+id/go"
                android:layout_width="268dp"
                android:layout_height="146dp"
                android:layout_marginStart="64dp"
                android:layout_marginTop="433dp"
                android:background="#3FED46"
                android:onClick="hideIt"
                android:text="GO!!"
                android:textSize="60dp"
                android:visibility="invisible" />

        </RelativeLayout>

    </RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>


因为您将约束布局嵌套在包含可能导致溢出的小部件的相对布局中。

您的第一个错误是在
约束布局中使用了
相对布局(实际上是两个!)。那是毫无意义的。只使用
ConstraintLayout
,因为它基本上是一个优于
的RelativeLayout
。您试图在
视图中使用
ConstraintLayout
约束,这些约束不是
ConstraintLayout
的直接子项。这不会有任何效果。基本上我只是在学习一个教程,而那个教程中的家伙也做了同样的事情。最后一个按钮“go”不是子相对布局的一部分。当我移动那个按钮的时候,它就进入了那个相对孩子的布局