首页 > 解决方案 > Android 应用程序布局在相同宽高比设备上显示不同

问题描述

所以我有这个我正在开发的 Android 计算器应用程序。当我在模拟器中运行应用程序时,它看起来就像它应该的那样。但是,当我在我的物理设备(屏幕分辨率 2220x1080)上运行它时,布局完全搞砸了。这是它在具有相同屏幕分辨率的模拟器中的外观:

在此处输入图像描述

以下是我在物理设备上运行应用程序时的外观:

在此处输入图像描述

这是我的 main_activity.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"
       android:background="#303030"
       tools:context=".MainActivity">

    <TableLayout
        android:id="@+id/tableLayout"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginTop="350dp"
        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="0.0">

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

            <Button
                android:id="@+id/clearBTN"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="match_parent"
                android:layout_height="70dp"
                android:layout_weight="1"
                android:scaleType="centerCrop"
                android:background="@drawable/circle_clear"
                android:onClick="clearBTN"
                android:text="@string/clear"
                android:textColor="#FFFFFF"
                android:textSize="@dimen/_32sdp" />

            <Button
                android:id="@+id/parenthesesBTN"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="70dp"
                android:layout_weight="1"
                android:scaleType="centerCrop"
                android:background="@drawable/circle"
                android:onClick="parenthesesBTN"
                android:text="@string/parentheses"
                android:textColor="#FFFFFF"
                android:textSize="@dimen/_32sdp" />

            <Button
                android:id="@+id/exponentBTN"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="70dp"
                android:layout_weight="1"
                android:scaleType="centerCrop"
                android:background="@drawable/circle"
                android:onClick="exponentBTN"
                android:text="@string/exponent"
                android:textColor="#FFFFFF"
                android:textSize="@dimen/_32sdp" />

            <Button
                android:id="@+id/divideBTN"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="70dp"
                android:layout_weight="1"
                android:scaleType="centerCrop"
                android:background="@drawable/circle"
                android:onClick="divideBTN"
                android:text="@string/divide"
                android:textColor="#FFFFFF"
                android:textSize="@dimen/_32sdp" />
        </TableRow>

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

            <Button
                android:id="@+id/sevenBTN"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="70dp"
                android:layout_weight="1"
                android:scaleType="centerCrop"
                android:background="@drawable/circle"
                android:onClick="sevenBTN"
                android:text="@string/seven"
                android:textColor="#FFFFFF"
                android:textSize="@dimen/_32sdp" />

            <Button
                android:id="@+id/eight"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="70dp"
                android:layout_weight="1"
                android:scaleType="centerCrop"
                android:background="@drawable/circle"
                android:onClick="eightBTN"
                android:text="@string/eight"
                android:textColor="#FFFFFF"
                android:textSize="@dimen/_32sdp" />

            <Button
                android:id="@+id/nine"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="70dp"
                android:layout_weight="1"
                android:scaleType="centerCrop"
                android:background="@drawable/circle"
                android:onClick="nineBTN"
                android:text="@string/nine"
                android:textColor="#FFFFFF"
                android:textSize="@dimen/_32sdp" />

            <Button
                android:id="@+id/multiply"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="70dp"
                android:layout_weight="1"
                android:scaleType="centerCrop"
                android:background="@drawable/circle"
                android:onClick="multiplyBTN"
                android:text="@string/multiply"
                android:textColor="#FFFFFF"
                android:textSize="@dimen/_32sdp" />
        </TableRow>

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

            <Button
                android:id="@+id/four"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="70dp"
                android:layout_weight="1"
                android:scaleType="centerCrop"
                android:background="@drawable/circle"
                android:onClick="fourBTN"
                android:text="@string/four"
                android:textColor="#FFFFFF"
                android:textSize="@dimen/_32sdp" />

            <Button
                android:id="@+id/fiveBTN"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="70dp"
                android:layout_weight="1"
                android:scaleType="centerCrop"
                android:background="@drawable/circle"
                android:onClick="fiveBTN"
                android:text="@string/five"
                android:textColor="#FFFFFF"
                android:textSize="@dimen/_32sdp" />

            <Button
                android:id="@+id/sixBTN"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="70dp"
                android:layout_weight="1"
                android:scaleType="centerCrop"
                android:background="@drawable/circle"
                android:onClick="sixBTN"
                android:text="@string/six"
                android:textColor="#FFFFFF"
                android:textSize="@dimen/_32sdp" />

            <Button
                android:id="@+id/subtractBTN"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="70dp"
                android:layout_weight="1"
                android:scaleType="centerCrop"
                android:background="@drawable/circle"
                android:onClick="subtractBTN"
                android:text="@string/subtract"
                android:textColor="#FFFFFF"
                android:textSize="@dimen/_32sdp" />
        </TableRow>

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

            <Button
                android:id="@+id/oneBTN"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="70dp"
                android:layout_weight="1"
                android:scaleType="centerCrop"
                android:background="@drawable/circle"
                android:onClick="oneBTN"
                android:text="@string/one"
                android:textColor="#FFFFFF"
                android:textSize="@dimen/_32sdp" />

            <Button
                android:id="@+id/twoBTN"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="70dp"
                android:layout_weight="1"
                android:scaleType="centerCrop"
                android:background="@drawable/circle"
                android:onClick="twoBTN"
                android:text="@string/two"
                android:textColor="#FFFFFF"
                android:textSize="@dimen/_32sdp" />

            <Button
                android:id="@+id/threeBTN"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="70dp"
                android:layout_weight="1"
                android:scaleType="centerCrop"
                android:background="@drawable/circle"
                android:onClick="threeBTN"
                android:text="@string/three"
                android:textColor="#FFFFFF"
                android:textSize="@dimen/_32sdp" />

            <Button
                android:id="@+id/addBTN"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="70dp"
                android:layout_weight="1"
                android:scaleType="centerCrop"
                android:background="@drawable/circle"
                android:onClick="addBTN"
                android:text="@string/add"
                android:textColor="#FFFFFF"
                android:textSize="@dimen/_32sdp" />
        </TableRow>

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

            <Button
                android:id="@+id/plusMinusBTN"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="70dp"
                android:layout_weight="1"
                android:scaleType="centerCrop"
                android:background="@drawable/circle"
                android:onClick="plusMinusBTN"
                android:text="@string/plusMinus"
                android:textColor="#FFFFFF"
                android:textSize="@dimen/_32sdp" />

            <Button
                android:id="@+id/zeroBTN"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="70dp"
                android:layout_weight="1"
                android:scaleType="centerCrop"
                android:background="@drawable/circle"
                android:onClick="zeroBTN"
                android:text="@string/zero"
                android:textColor="#FFFFFF"
                android:textSize="@dimen/_32sdp" />

            <Button
                android:id="@+id/pointBTN"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="70dp"
                android:layout_weight="1"
                android:scaleType="centerCrop"
                android:background="@drawable/circle"
                android:onClick="pointBTN"
                android:text="@string/point"
                android:textColor="#FFFFFF"
                android:textSize="@dimen/_32sdp" />

            <Button
                android:id="@+id/equalsBTN"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="70dp"
                android:layout_weight="1"
                android:scaleType="centerCrop"
                android:background="@drawable/circle_equals"
                android:onClick="equalsBTN"
                android:text="@string/equals"
                android:textColor="#FFFFFF"
                android:textSize="@dimen/_32sdp" />

        </TableRow>
    </TableLayout>

    <ImageButton
        android:id="@+id/display"
        style="?android:attr/buttonBarButtonStyle"
        android:layout_width="@dimen/_93sdp"
        android:layout_height="@dimen/_85sdp"
        android:background="@drawable/circle"
        android:contentDescription="@string/backspace"
        android:onClick="backspaceBTN"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="1.03"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.39"
        app:srcCompat="@drawable/backspace" />

    <EditText
        android:id="@+id/input"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="100dp"
        android:autofillHints="false"
        android:inputType="none"
        android:maxLength="@string/maxLength"
        android:text="@string/display"
        android:textAlignment="textEnd"
        android:textColor="#FFFFFF"
        android:textSize="@dimen/_48sdp"
        android:scaleType="centerCrop"
        app:layout_constraintBottom_toTopOf="@+id/tableLayout"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.95"
        tools:ignore="LabelFor" />
</androidx.constraintlayout.widget.ConstraintLayout>

标签: androidxmlxml-layout

解决方案


推荐阅读