根据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>
答案 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或您使用的固定大小),结果在不同的设备显示中会有所不同。
在某些情况下,它们会重叠,而在某些情况下,它们不会重叠。
我建议你尝试在多个显示器上运行它,以确认这一点。例如,尝试更改方向并尝试各种模拟器配置。
要解决这个问题,有多种解决方案,取决于您的需求:
尺寸和位置必须匹配:要么都是百分比,要么两者都是固定尺寸。
在视图之间创建更好的关系,这将永远有效