Android布局预览与设备不匹配

时间:2017-09-17 12:47:33

标签: android android-layout

根据dp的定义,10dp在具有相同尺寸的设备上应该相同,而与密度无关。那么为什么Android Studio中的布局预览在我的手机中运行时与布局不匹配?我在Android Studio预览中使用像素XL,我在三星J7 prime上运行它。两者都是对角线但密度不同的5.5英寸。布局代码: -

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/re/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
  android:id="@+id/ll"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:gravity="center_vertical|center_horizontal|center"
  tools:layout_editor_absoluteY="25dp"
  tools:layout_editor_absoluteX="0dp">


<ProgressBar
    android:id="@+id/progressBar2"
    style="?android:attr/progressBarStyle"
    android:layout_width="147dp"
    android:layout_height="173dp"
    app:layout_constraintTop_toTopOf="parent"
    android:layout_marginTop="454dp"
    android:layout_marginStart="248dp"
    app:layout_constraintLeft_toLeftOf="parent"
    android:layout_marginEnd="16dp"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintHorizontal_bias="0.0" />

<SeekBar
    android:id="@+id/seekBar"
    android:layout_width="122dp"
    android:layout_height="116dp"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:background="@android:color/black"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toLeftOf="@+id/progressBar2"
    app:layout_constraintTop_toTopOf="parent"
    android:layout_marginTop="494dp"
    app:layout_constraintHorizontal_bias="0.518" />

<RatingBar
    android:id="@+id/ratingBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="9dp"
    android:layout_marginStart="16dp"
    android:layout_marginTop="8dp"
    android:background="@android:color/holo_purple"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.75" />

</android.support.constraint.ConstraintLayout>

The screenshot of the app:

Here is the picture of preview:

2 个答案:

答案 0 :(得分:0)

IDE的问题是向您显示此错误,您每次使用小部件时都会执行此操作,其中始终将宽度用作 wrap_content match_parent 是因为您获得的预览与天然手机的外观略有不同。

对于身高,你可以给自己高度。屏幕的宽度会产生问题。

如果你在wrap_content中找到了大小问题,那么你可以按照这样的方式来获得所需的结果。

<ProgressBar 
  android:width="match_parent"
  android:height="115dp"
  android:marginLeft="20dp"
  androidMarginRight="20dp">

您可以达到所需的宽度,您可以无需调整边距值。

做这样的事情的好处会在手机中给你想要的结果,因为它将占用手机宽度的全部空间(Real One),现在根据它调整边距。

尝试一下,然后告诉我你是否得到了一些结果。

<强> EDITS

在布局中这样做是为了调整

<LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginTop="25dp"
        android:layout_weight="1">

        <RelativeLayout
            android:layout_width="170dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_weight="1"
            android:layout_marginRight="20dp">
            <Button
                android:id="@+id/facebookButton"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingTop="13dp"
                android:paddingBottom="11dp"
                android:layout_marginTop="4dp" />
        </RelativeLayout>


        <RelativeLayout
            android:layout_width="170dp"
            android:layout_height="wrap_content"
            android:layout_marginRight="10dp"
            android:layout_weight="1">
            <Button
                android:id="@+id/googleButton"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>
        </RelativeLayout>
    </LinearLayout>

为你的问题做这样的事。

答案 1 :(得分:0)

我的猜测是,由于您使用百分比来定位视图,但是它们的正常大小(wrap_content或您使用的固定大小),结果在不同的设备显示中会有所不同。

在某些情况下,它们会重叠,而在某些情况下,它们不会重叠。

我建议你尝试在多个显示器上运行它,以确认这一点。例如,尝试更改方向并尝试各种模拟器配置。

要解决这个问题,有多种解决方案,取决于您的需求:

  1. 尺寸和位置必须匹配:要么都是百分比,要么两者都是固定尺寸。

  2. 在视图之间创建更好的关系,这将永远有效