Изменение положения виджетов в эмуляторе

#android #android-studio #android-emulator

#Android #android-студия #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=".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>
  

Комментарии:

1. Ваша первая ошибка заключается в использовании RelativeLayout (фактически двух!) внутри ConstraintLayout . Это бессмысленно. Используйте только ConstraintLayout , так как это в основном улучшенный RelativeLayout . И вы пытаетесь использовать ConstraintLayout ограничения в Views , которые не являются прямыми дочерними элементами ConstraintLayout . Это не будет иметь никакого эффекта.

2. По сути, я просто следовал руководству, и парень из этого руководства сделал то же самое. Эта последняя кнопка «перейти» не является частью дочернего относительного макета. Он просто вошел в этот дочерний относительный макет, пока я перемещал эту кнопку

Ответ №1:

Потому что вы вкладываете макет ограничения в относительный макет, который содержит виджет, который может привести к переполнению.