android - 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>
解决方案
推荐阅读
- ruby-on-rails - 如何在 where 查询中使用参数 - Ruby?
- c - 等效表达式 memset 和数组
- angularjs - MVC 控制器方法未从 $http post 接收 json 数据
- ios - 如何在其他开发人员设备中安装我的 xcode 项目以进行测试
- android - 当我尝试使用 FloatingActionButton 打开 Main2Activity 时应用程序崩溃
- python - Python Bot 中的子命令
- c - 带有存储类说明符的空声明/声明说明符中有两种或多种数据类型
- c++ - Compaq Visual Fortran 对 DFOR.LIB 的引用
- sql-server - 如何为插入创建触发器以检查 MS SQL Server 中的逻辑删除
- javascript - #JavaScript If 语句不适用于 setInterval