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

3

我目前正在华为MediaPad T3 10上开发一款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>

1
你有模拟器和真实设备的截图吗? - RDO
@RDO 请查看已编辑的帖子。 - Bram
你可以分享一下你的布局代码吗? - Apurva Kolapkar
@ApurvaKolapkar 刚刚完成了。 - Bram
1
你能试着把所有按钮都添加到一个垂直的线性布局中吗? - Apurva Kolapkar
显示剩余2条评论
3个回答

1
这些不对齐。 您可以尝试将所有按钮添加到垂直方向的LinearLayout中。

0
请提供您的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"


非常感谢您的回复,不幸的是,它没有起作用,什么都没有改变。我确实在使用ConstraintLayout。 - Bram

0

您的模拟器和设备上可能没有相同数量的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" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接