Расположение кнопок меняется на разных устройствах - PullRequest
0 голосов
/ 29 февраля 2020

Изменения положения кнопок моего приложения на разных устройствах. Иногда кнопки становятся больше, иногда становятся меньше, иногда часть кнопок не видна. Я использую вертикальную линейную разметку. Кнопки находятся в папке для рисования, а размеры кнопок составляют 227x231 px.

Есть несколько примеров скриншотов. Пиксель 2 - Пиксель 3a - Mi 9T Pro

Как исправить?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/back4">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="95dp"
    android:background="@drawable/a"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/teamName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="15dp"
        android:layout_weight="1"
        android:fontFamily="@font/andika"
        android:paddingTop="20dp"
        android:text="Team 1"
        android:textAlignment="center"
        android:textColor="#000000"
        android:textSize="20sp" />

    <TextView
        android:id="@+id/score"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="15dp"
        android:layout_weight="1"
        android:paddingLeft="50dp"
        android:text="5"
        android:textColor="#303f9f"
        android:textSize="36sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/roundText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="15dp"
        android:layout_weight="1"
        android:fontFamily="@font/andika"
        android:paddingLeft="10dp"
        android:paddingTop="10dp"
        android:text="Round 1/5"
        android:textAlignment="viewStart"
        android:textColor="#000000"
        android:textSize="20sp" />
</LinearLayout>

<TextView
    android:id="@+id/timeText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="100dp"
    android:layout_marginTop="20dp"
    android:layout_marginRight="100dp"
    android:fontFamily="@font/arsenal_bold"
    android:text="60"
    android:textAlignment="center"
    android:textColor="#E2DADA"
    android:textSize="40sp"
    android:textStyle="bold" />

<ProgressBar
    android:id="@+id/progressBar"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:progress="0"/>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="419dp"
    android:background="@drawable/game4"
    android:orientation="vertical">

    <TextView
        android:id="@+id/guessWord"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="80dp"
        android:layout_marginTop="50dp"
        android:layout_marginEnd="80dp"
        android:text="Guess "
        android:textAlignment="center"
        android:textColor="#FFFFFF"
        android:textSize="38sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/translateWord"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="80dp"
        android:layout_marginTop="10dp"
        android:layout_marginEnd="80dp"
        android:text="(Translate)"
        android:textAlignment="center"
        android:textColor="#D0FFFFFF"
        android:textSize="26sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/tabuWord1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="80dp"
        android:layout_marginTop="35dp"
        android:layout_marginEnd="80dp"
        android:text="TextView"
        android:textAlignment="center"
        android:textSize="30sp" />

    <TextView
        android:id="@+id/tabuWord2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="80dp"
        android:layout_marginTop="15dp"
        android:layout_marginEnd="80dp"
        android:text="TextView"
        android:textAlignment="center"
        android:textSize="30sp" />

    <TextView
        android:id="@+id/tabuWord3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="80dp"
        android:layout_marginTop="15dp"
        android:layout_marginEnd="80dp"
        android:text="TextView"
        android:textAlignment="center"
        android:textSize="30sp" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="123dp"
    android:orientation="horizontal">

    <Button
        android:id="@+id/tabuButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="30dp"
        android:layout_marginTop="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginBottom="30dp"
        android:layout_weight="1"
        android:background="@drawable/tabubutton2" />

    <Button
        android:id="@+id/passButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginBottom="30dp"
        android:layout_weight="1"
        android:background="@drawable/pasbutton2" />

    <Button
        android:id="@+id/trueButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="20dp"
        android:layout_marginEnd="30dp"
        android:layout_marginBottom="30dp"
        android:layout_weight="1"
        android:background="@drawable/truebutton2" />
    </LinearLayout>

</LinearLayout>

Ответы [ 2 ]

0 голосов
/ 29 февраля 2020

Вы можете сделать это примерно так:

   <?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">


        <ScrollView
            style="@style/parent"
            tools:ignore="MissingConstraints">
                        .......
        </ScrollView>


</androidx.constraintlayout.widget.ConstraintLayout>

стиль. xml

  <style name="parent">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>
    </style>

Я думаю, это должно работать на всех экранах

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/back4">

    <ScrollView
        style="@style/parent"
        tools:ignore="MissingConstraints,ScrollViewCount">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="95dp"
                android:background="@drawable/a"
                android:orientation="horizontal">

                <TextView
                    android:id="@+id/teamName"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="20dp"
                    android:layout_marginTop="15dp"
                    android:layout_weight="1"
                    android:fontFamily="@font/andika"
                    android:paddingTop="20dp"
                    android:text="Team 1"
                    android:textAlignment="center"
                    android:textColor="#000000"
                    android:textSize="20sp" />

                <TextView
                    android:id="@+id/score"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:layout_marginTop="15dp"
                    android:layout_weight="1"
                    android:paddingLeft="50dp"
                    android:text="5"
                    android:textColor="#303f9f"
                    android:textSize="36sp"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/roundText"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="20dp"
                    android:layout_marginTop="15dp"
                    android:layout_weight="1"
                    android:fontFamily="@font/andika"
                    android:paddingLeft="10dp"
                    android:paddingTop="10dp"
                    android:text="Round 1/5"
                    android:textAlignment="viewStart"
                    android:textColor="#000000"
                    android:textSize="20sp" />
            </LinearLayout>

            <TextView
            android:gravity="center"
            android:layout_gravity="center"
            android:id="@+id/timeText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:fontFamily="@font/arsenal_bold"
            android:text="60"
            android:textAlignment="center"
            android:textColor="#E2DADA"
            android:textSize="40sp"
            android:textStyle="bold" />

            <ProgressBar
                android:id="@+id/progressBar"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:progress="0"/>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/game4"
                android:orientation="vertical">

                <TextView
                    android:layout_margin="25dp"
                    android:id="@+id/guessWord"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Guess "
                    android:textAlignment="center"
                    android:textColor="#FFFFFF"
                    android:textSize="38sp"
                    android:textStyle="bold" />

                <TextView
                    android:layout_margin="15dp"
                    android:id="@+id/translateWord"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="(Translate)"
                    android:textAlignment="center"
                    android:textColor="#D0FFFFFF"
                    android:textSize="26sp"
                    android:textStyle="bold" />

                <TextView
                    android:layout_margin="15dp"
                    android:id="@+id/tabuWord1"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="TextView"
                    android:textAlignment="center"
                    android:textSize="30sp" />

                <TextView
                    android:layout_margin="15dp"
                    android:id="@+id/tabuWord2"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="TextView"
                    android:textAlignment="center"
                    android:textSize="30sp" />

                <TextView
                    android:layout_margin="15dp"
                    android:id="@+id/tabuWord3"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="TextView"
                    android:textAlignment="center"
                    android:textSize="30sp" />
            </LinearLayout>

            <LinearLayout
                android:layout_marginTop="15dp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">

                <Button
                    android:layout_margin="25dp"
                    android:id="@+id/tabuButton"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="@drawable/tabubutton2" />

                <Button
                    android:layout_margin="25dp"
                    android:id="@+id/passButton"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="@drawable/pasbutton2" />

                <Button
                    android:layout_margin="25dp"
                    android:id="@+id/trueButton"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="@drawable/truebutton2" />
            </LinearLayout>
        </LinearLayout>




    </ScrollView>


</androidx.constraintlayout.widget.ConstraintLayout>
0 голосов
/ 29 февраля 2020

Вы должны использовать ScrollView, но если вы не хотите прокручивать экран, вы должны перестроить его, используя ConstraintLayout

...