与设备相比,我在 android 中的布局预览显示不同
Posted
技术标签:
【中文标题】与设备相比,我在 android 中的布局预览显示不同【英文标题】:My layout preview in android is showing different as compared to device 【发布时间】:2019-07-18 19:59:07 【问题描述】:请告诉我的代码哪里出错了。或者是某些设置有问题。我已经尝试过约束布局,它仍然显示类似的错误。我还检查了设备分辨率。它与预览匹配,但仍然显示不同。
这是它在预览中的显示方式。
这是它在设备中的显示方式。
<RelativeLayout android:layout_
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_
android:orientation="vertical"
>
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/pr_image"
android:layout_
android:layout_
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginStart="144dp"
android:layout_marginTop="21dp"
android:layout_marginEnd="152dp"
android:src="@mipmap/ic_launcher_round" />
<TextView
android:id="@+id/textView"
android:layout_
android:layout_
android:layout_below="@+id/pr_image"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true"
android:layout_marginStart="124dp"
android:layout_marginTop="26dp"
android:layout_marginEnd="125dp"
android:text="@string/personal_details"
android:textSize="22sp"
android:textStyle="bold" />
<EditText
android:id="@+id/pr_name"
android:layout_
android:layout_
android:layout_below="@+id/textView"
android:layout_alignParentStart="true"
android:layout_marginStart="56dp"
android:layout_marginTop="21dp"
android:ems="10"
android:hint="@string/full_name"
android:inputType="textPersonName"
android:textSize="16sp" />
<EditText
android:id="@+id/pr_email"
android:layout_
android:layout_
android:layout_below="@+id/pr_name"
android:layout_alignParentStart="true"
android:layout_marginStart="56dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="56dp"
android:ems="10"
android:hint="@string/email"
android:inputType="textPersonName"
android:textSize="16sp" />
<EditText
android:id="@+id/ed_location"
android:layout_
android:layout_
android:layout_below="@+id/pr_email"
android:layout_alignParentStart="true"
android:layout_marginStart="55dp"
android:layout_marginTop="23dp"
android:layout_marginEnd="56dp"
android:ems="10"
android:hint="@string/location"
android:inputType="textPersonName"
android:textSize="16sp" />
<EditText
android:id="@+id/pd_links"
android:layout_
android:layout_
android:layout_below="@+id/ed_location"
android:layout_alignParentStart="true"
android:layout_marginStart="55dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="56dp"
android:ems="10"
android:hint="@string/links"
android:inputType="textPersonName"
android:textSize="16sp" />
<EditText
android:id="@+id/pd_mobile"
android:layout_
android:layout_
android:layout_below="@+id/pd_links"
android:layout_alignParentStart="true"
android:layout_marginStart="56dp"
android:layout_marginTop="26dp"
android:layout_marginEnd="56dp"
android:ems="10"
android:hint="@string/mobile"
android:inputType="textPersonName"
android:textSize="16sp" />
<Button
android:id="@+id/pd_save"
android:layout_
android:layout_
android:layout_below="@+id/pd_mobile"
android:layout_alignParentStart="true"
android:layout_marginStart="155dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="152dp"
android:text="@string/save" />
【问题讨论】:
尝试使用约束布局。比相对布局更好的布局 【参考方案1】:好的,试试这个编辑过的 xml 文件的代码,你会遇到这个问题,因为手机屏幕尺寸不同,当你手动指定宽度并将其运行到特定手机时,它会根据屏幕尺寸自行调整,这就是你的屏幕的主要原因搞砸了,所以不要手动指定宽度,而是将其设置为 match_parent 并提供左右边距来解决您的问题:
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/pr_image"
android:layout_
android:layout_
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginStart="144dp"
android:layout_marginTop="21dp"
android:layout_marginEnd="152dp"
android:src="@mipmap/ic_launcher_round" />
<TextView
android:id="@+id/textView"
android:layout_
android:layout_
android:layout_below="@+id/pr_image"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true"
android:layout_marginStart="124dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginTop="26dp"
android:layout_marginEnd="125dp"
android:text="@string/personal_details"
android:textSize="22sp"
android:textStyle="bold" />
<EditText
android:id="@+id/pr_name"
android:layout_
android:layout_
android:layout_below="@+id/textView"
android:layout_alignParentStart="true"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginStart="56dp"
android:layout_marginTop="21dp"
android:ems="10"
android:hint="@string/full_name"
android:inputType="textPersonName"
android:textSize="16sp" />
<EditText
android:id="@+id/pr_email"
android:layout_
android:layout_
android:layout_below="@+id/pr_name"
android:layout_alignParentStart="true"
android:layout_marginStart="56dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="56dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:ems="10"
android:hint="@string/email"
android:inputType="textPersonName"
android:textSize="16sp" />
<EditText
android:id="@+id/ed_location"
android:layout_
android:layout_
android:layout_below="@+id/pr_email"
android:layout_alignParentStart="true"
android:layout_marginStart="55dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginTop="23dp"
android:layout_marginEnd="56dp"
android:ems="10"
android:hint="@string/location"
android:inputType="textPersonName"
android:textSize="16sp" />
<EditText
android:id="@+id/pd_links"
android:layout_
android:layout_
android:layout_below="@+id/ed_location"
android:layout_alignParentStart="true"
android:layout_marginStart="55dp"
android:layout_marginTop="24dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginEnd="56dp"
android:ems="10"
android:hint="@string/links"
android:inputType="textPersonName"
android:textSize="16sp" />
<EditText
android:id="@+id/pd_mobile"
android:layout_
android:layout_
android:layout_below="@+id/pd_links"
android:layout_alignParentStart="true"
android:layout_marginStart="56dp"
android:layout_marginTop="26dp"
android:layout_marginEnd="56dp"
android:ems="10"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:hint="@string/mobile"
android:inputType="textPersonName"
android:textSize="16sp" />
<Button
android:id="@+id/pd_save"
android:layout_
android:layout_
android:layout_below="@+id/pd_mobile"
android:layout_alignParentStart="true"
android:layout_marginStart="155dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="152dp"
android:text="@string/save" />
【讨论】:
请解释一下你在做什么以便他能理解 如果您已经在使用 MarginLeft/Right 和 marginStart/End 则将它们设置为相同的值。如果左边距等于右边距,则不需要 marginStart/End @isaaaaame 这个答案供他参考 这不是代码编写服务让他自己弄清楚 @Mr. Patel 我尝试了您的代码,但它的显示方式与预览显示的方式不同。 @ShreyAgarwal 删除开始和结束【参考方案2】:您在视图上使用固定尺寸,并且由于不同的手机具有不同的屏幕尺寸,因此此布局并不能真正响应所有设备,如果您想要完全响应式布局,您最好使用constraint layout。 如果您想使用相对布局,您最好更改您的固定尺寸,但如前所述,约束布局将是您的最佳选择 - 这是一个简单布局的示例,看起来像您希望的那样:强>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_
android:layout_>
<ImageView
android:id="@+id/imageView"
android:layout_
android:layout_
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@tools:sample/avatars[5]" />
<TextView
android:id="@+id/textView8"
android:layout_
android:layout_
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:text="Personal details"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView" />
<EditText
android:id="@+id/editText3"
android:layout_
android:layout_
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:text="Full name"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView8" />
<EditText
android:id="@+id/editText"
android:layout_
android:layout_
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:text="Full Email"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText2" />
<EditText
android:id="@+id/editText4"
android:layout_
android:layout_
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:text="Location"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText" />
<EditText
android:id="@+id/editText5"
android:layout_
android:layout_
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:text="Links"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText4" />
<EditText
android:id="@+id/editText6"
android:layout_
android:layout_
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="180dp"
android:text="Mobile"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText5" />
<EditText
android:id="@+id/editText2"
android:layout_
android:layout_
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:text="Full name"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView8" />
<Button
android:id="@+id/button2"
android:layout_
android:layout_
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:text="Button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
【讨论】:
以上是关于与设备相比,我在 android 中的布局预览显示不同的主要内容,如果未能解决你的问题,请参考以下文章
Android studio设置与测试机屏幕大小相同的布局预览