我对android相对陌生。在设计我的布局时,我偶然发现了一个我无法解决的问题,这个问题似乎在任何地方都没有答案。或者,也许我真的不知道该搜索什么。无论如何,问题在于与实际设备相比,在模拟器中预览和显示布局的方式。正如下面的图片所示,布局元素和间距都被取消了。所有的东西都大得多,离得更近,离得更远,这是我所期望的。对于预览和模拟器,我使用适用于pyhsical测试设备(OnePlus 8Pro(的规格。
在我看到的其他问题中,答案是,我使用dp硬编码一些尺寸可能是个问题,因为显示器的dpi很高(确切地说是xhdpi(,但即使只使用约束或使用px,预览和模拟器也总是与实际设备上的应用程序不同。以下是图片和xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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=".EntryActivity">
<TextView
android:id="@+id/textView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity=""
android:layout_marginTop="416px"
android:gravity="center_horizontal"
android:orientation="vertical"
android:text="@string/header_text"
android:textAlignment="center"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageButton
android:id="@+id/buttonPlay"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginTop="336dp"
android:adjustViewBounds="true"
android:backgroundTint="#00FFFFFF"
android:onClick="changeActivity"
android:scaleType="fitCenter"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView"
app:srcCompat="@drawable/button_play_02" />
<ImageButton
android:id="@+id/buttonCreate"
android:layout_width="156dp"
android:layout_height="wrap_content"
android:layout_marginTop="340dp"
android:layout_marginEnd="20dp"
android:adjustViewBounds="true"
android:backgroundTint="#00FFFFFF"
android:onClick="changeActivity"
android:scaleType="fitCenter"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.993"
app:layout_constraintStart_toEndOf="@+id/buttonPlay"
app:layout_constraintTop_toBottomOf="@+id/textView"
app:srcCompat="@drawable/button_create" />
</androidx.constraintlayout.widget.ConstraintLayout>
在Android Studio 中预览
模拟器
物理设备
我认为您在约束布局方面犯了很多新手错误。
正如你所说,你是一个初学者,我建议你尝试使用相对布局。
如果你想坚持约束布局,这里有一个快速教程,它将使你的约束布局基础更加强大:Youtube:约束布局的流播放列表中的代码
快速提示:
- 如果您正专注于获得正确的约束,请尝试保持按钮的布局(高度和宽度(相同
对于其中一个按钮,您使用了代码块:
android:layout_width="0dp" android:layout_height="wrap_content"
对于您使用过的其他按钮:
android:layout_width="156dp" android:layout_height="wrap_content"
- 非常重要;考虑把项目硬链接起来。别担心!这是很小的事情。一旦你通过链接,事情就会好起来的