Android Studio 模拟器尺寸与真实尺寸不符

Android Studio emulator sizes aren't correct with the real thing

我目前正在 Huawei MediaPad t3 10 Click for more information

上开发 android 应用

目前我正在更改布局。 我更改了 Android Studio 中的模拟器设置以模仿我的真实平板电脑。 不幸的是,我的模拟器显示所有按钮都在正确的位置,但是当我将应用程序上传到我的实际设备时,整个布局不正确,所有内容都在错误的位置。如何解决?

编辑: 实物和模拟器截图:

在模拟器中,我移动了文本以确保它在真实的东西上是正确的。但这显然不需要这样做。这些按钮的大小也不同,而模拟器显示它们都是一样的。

另一项编辑: 这是布局代码

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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"
tools:context="com.example.jurian.dynamicroomreservation.MainActivity">


<Button
    android:id="@+id/btnCheckIn"
    android:layout_width="430dp"
    android:layout_height="125dp"
    android:layout_alignParentStart="true"
    android:layout_alignTop="@+id/toolbar"
    android:layout_marginStart="75dp"
    android:background="#3f51b5"
    android:fontFamily="sans-serif"
    android:text="@string/checkIn"
    android:textAllCaps="false"
    android:textColor="#fff"
    android:textSize="36sp"
    app:layout_constraintBottom_toBottomOf="parent"
    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.163" />

<Button
    android:id="@+id/btnReserve"
    android:layout_width="430dp"
    android:layout_height="125dp"
    android:layout_alignStart="@+id/btnCheckIn"
    android:layout_centerVertical="true"
    android:layout_column="0"
    android:layout_row="1"
    android:background="#ff4081"
    android:fontFamily="sans-serif"
    android:text="@string/reserve"
    android:textAllCaps="false"
    android:textColor="#fff"
    android:textSize="36sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.088"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.447" />

<Button
    android:id="@+id/btnShowReservations"
    android:layout_width="430dp"
    android:layout_height="125dp"
    android:layout_alignBottom="@+id/toolbar"
    android:layout_alignStart="@+id/btnReserve"
    android:layout_column="0"
    android:layout_row="2"
    android:background="#ffffff"
    android:fontFamily="sans-serif"
    android:text="@string/showReservations"
    android:textAllCaps="false"
    android:textColor="#000"
    android:textSize="36sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.093"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.755" />

<ImageView
    android:id="@+id/toolbar"
    android:layout_width="519dp"
    android:layout_height="519dp"
    android:layout_alignParentEnd="true"
    android:layout_centerVertical="true"
    android:layout_marginEnd="75dp"
    android:src="@drawable/green_rectangle"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.972"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:id="@+id/textViewRoomStatusText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/btnCheckIn"
    android:layout_alignBottom="@+id/btnCheckIn"
    android:layout_alignStart="@+id/textViewRoomStatus"
    android:layout_marginStart="43dp"
    android:fontFamily="sans-serif"
    android:text="@string/roomStatusText"
    android:textColor="#fff"
    android:textSize="36sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.692"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.178" />

<TextView
    android:id="@+id/textViewRoomStatus"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignEnd="@+id/toolbar"
    android:layout_centerVertical="true"
    android:layout_marginEnd="85dp"
    android:fontFamily="sans-serif"
    android:text="@string/roomStatusAvailable"
    android:textColor="#fff"
    android:textSize="48sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.818"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.499" />

<TextView
    android:id="@+id/textViewOccupied"
    android:layout_width="300dp"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/btnShowReservations"
    android:layout_alignBottom="@+id/btnShowReservations"
    android:layout_alignStart="@+id/textViewRoomStatus"
    android:fontFamily="sans-serif"
    android:text="@string/reserveText"
    android:textAlignment="center"
    android:textColor="#fff"
    android:textSize="24sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.75"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.852" />

   </android.support.constraint.ConstraintLayout>

请提供您的 XML 布局代码,以便我们帮助您。

如果您使用的是 ConstraintLayout,请在 XML 文本编辑器中检查您的约束条件

  • 你的第一个按钮应该包含(如果你想让它居中)

android:layout_marginTop="171dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent"

  • 底部字段应包含

app:layout_constraintLeft_toLeftOf="@+id/yourFirstElement" app:layout_constraintTop_toBottomOf="@+id/yourFirstElement"

这些没有正确对齐。 您可以尝试在垂直方向的 LinearLayout 中添加所有按钮。

您的模拟器和设备中的 dp 数量可能不同,因此您不应该修复父级开始和父级顶部的约束,而是从一个按钮到另一个按钮。这就是约束布局的目的。

例如,你的第二个和第三个按钮应该从第一个按钮开始修复:

<Button
    android:id="@+id/btnReserve"
    android:layout_width="0dp"
    android:layout_height="125dp"
    android:margin_top="16dp"
    android:background="#ff4081"
    android:fontFamily="sans-serif"
    android:text="@string/reserve"
    android:textAllCaps="false"
    android:textColor="#fff"
    android:textSize="36sp"
    app:layout_constraintTop_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="@+id/btnCheckIn"
    app:layout_constraintStart_toStartOf="@+id/btnCheckIn" />

<Button
    android:id="@+id/btnShowReservations"
    android:layout_width="0dp"
    android:layout_height="125dp"
    android:layout_row="2"
    android:marginTop="16dp"
    android:background="#ffffff"
    android:fontFamily="sans-serif"
    android:text="@string/showReservations"
    android:textAllCaps="false"
    android:textColor="#000"
    android:textSize="36sp"
    app:layout_constraintTop_toBottomOf="@+id/btnReserve"
    app:layout_constraintEnd_toEndOf="@+id/btnCheckIn"
    app:layout_constraintStart_toStartOf="@+id/btnCheckIn" />