как добавить поддержку разрешения планшета в Android Studio - PullRequest
0 голосов
/ 19 февраля 2020

Использование ConstraintLayout Я видел эту проблему: на телефонах разрешение моих виджетов нормальное и занимает почти все пространство экрана:

enter image description here

Но когда я переключаюсь на разрешение планшетов, все виджеты становятся маленькими и не могут быть просмотрены на экране:

enter image description here

Как сделать разрешение виджетов выглядит нормально на всех разрешениях и устройствах?

<?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"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TableLayout
        android:id="@+id/table_l"
        android:layout_width="297dp"
        android:layout_height="329dp"
        android:layout_weight="1"
        android:layout_x="57dp"
        android:layout_y="202dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1" />

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1" />

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1">

        </TableRow>
    </TableLayout>

    <Button
        android:id="@+id/st"
        android:layout_width="178dp"
        android:layout_height="wrap_content"
        android:layout_x="120dp"
        android:layout_y="112dp"
        android:text="start"
        app:layout_constraintBottom_toTopOf="@+id/table_l"
        app:layout_constraintEnd_toEndOf="@+id/table_l"
        app:layout_constraintHorizontal_bias="0.495"
        app:layout_constraintStart_toStartOf="@+id/table_l"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_weight="1"
        app:layout_constraintVertical_bias="0.647" />

    <TextView
        android:id="@+id/X_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="48dp"
        android:layout_x="118dp"
        android:layout_y="608dp"
        android:text="x:"
        android:textSize="30sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="@+id/O_text"
        app:layout_constraintStart_toStartOf="@+id/O_text"
        app:layout_constraintTop_toBottomOf="@+id/O_text" />

    <TextView
        android:id="@+id/O_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="36dp"
        android:layout_x="116dp"
        android:layout_y="661dp"
        android:text="o:"
        android:textSize="30sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="@+id/table_l"
        app:layout_constraintHorizontal_bias="0.153"
        app:layout_constraintStart_toStartOf="@+id/table_l"
        app:layout_constraintTop_toBottomOf="@+id/table_l"
        app:layout_constraintVertical_bias="0.0" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="27dp"
        android:layout_height="47dp"
        android:layout_marginTop="36dp"
        android:textSize="36sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.139"
        app:layout_constraintStart_toEndOf="@+id/O_text"
        app:layout_constraintTop_toBottomOf="@+id/table_l"
        app:layout_constraintVertical_bias="0.0" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="25dp"
        android:layout_height="45dp"
        android:layout_marginBottom="52dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.151"
        app:layout_constraintStart_toEndOf="@+id/X_text"
        app:layout_constraintTop_toBottomOf="@+id/textView3"
        app:layout_constraintVertical_bias="0.571" />

</androidx.constraintlayout.widget.ConstraintLayout>

Ответы [ 2 ]

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

Вы должны прекратить использовать фиксированные размеры и позиции х / у для макетов. Могут быть исключения, но в целом все представления должны быть в состоянии динамически изменять свой размер. Это означает, что вы почти никогда не используете фиксированные значения для ширины, а вместо этого wrap_content или match_parent. После 4 лет разработки android мне также пришлось найти один случай, когда мне понадобились теги layout_x и layout_y XML.

В противном случае этот макет будет маленьким на больших экранах и не будет помещаться на маленьких экранах.

Для 90% макетов все, что вам нужно, это ConstraintLayout и, возможно, LinearLayout , RelativeLayout s в основном устарели.

Объяснение того, как правильно организовать ваш пользовательский интерфейс, было бы здесь исчерпывающим. Вместо этого я рекомендую вам потратить время на go с помощью учебника, подобного этому google codelab, по созданию отзывчивого пользовательского интерфейса с ограничениями . Если все сделано правильно, вы можете создать один пользовательский интерфейс, который будет хорошо смотреться на смартфонах и планшетах.

Но если вы хотите иметь совершенно иную компоновку для планшетов, то подход @Mustafa Yanık верен. Затем вам нужно создать второй макет в другой подпапке.

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

Вы должны создать макет xml файлов для экрана другого размера. Например; Если ваше приложение работает на планшете (7 дюймов), вы должны создать новый макет в виде layout-sw600dp.

Для получения более подробной информации посмотрите эту ссылку .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...