如何在Android Studio中添加平板电脑分辨率支持

时间:2020-02-19 07:33:08

标签: android xml android-studio

使用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 :(得分:0)

您应该为不同的屏幕尺寸创建布局xml文件。例如;如果您的应用在7英寸平板电脑上运行,则必须将新布局创建为layout-sw600dp。

查看此link以获得更多详细信息。

答案 1 :(得分:0)

您应该停止对布局使用固定大小和x / y位置。可能会有例外,但是总的来说,所有视图都应该能够动态调整自身大小。这意味着,您几乎从不使用固定值作为宽度,而是使用wrap_contentmatch_parent。经过4年的android开发,我还必须找到一种情况,需要使用layout_xlayout_y XML标签。

否则,此布局在大屏幕上将很小,而在小屏幕上将不适合。

对于90%的布局,您只需要ConstraintLayout甚至是LinearLayoutRelativeLayout几乎已经过时。

在这里详尽解释如何正确安排用户界面。相反,我建议您花一些时间来阅读类似google codelab on building a responsive UI with constraintlayouts的教程。如果操作正确,则可以构建一个看起来不错的智能手机和平板电脑用户界面。

但是,如果您希望平板电脑具有完全不同的布局,那么@MustafaYanık的方法是正确的。然后,您需要在其他子文件夹中创建第二个布局。

相关问题