我正在学习 Android Studio,参加 Udemy 课程。
课程本身一切都很好,我也相处得很好。唯一的问题是,我的笔记本电脑很弱,比如 8GB 的内存很弱。因此,像视频中的讲师所做的那样运行模拟器对我来说是一个非常漫长的过程。幸运的是,我有 S24 Ultra,所以我可以对其进行测试。
问题是,我制作的所有应用程序在我的手机上显示得比在设计窗口中大得多。我尝试了很多不同的设备选项和模拟器,在我使用实际设备之前它们看起来都很好。
我不明白我做错了什么。我正在使用约束布局并约束所有视图对象。
它应该是这样的:
这是我手机上的样子:
代码:
<?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:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/wallpaper"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="72sp"
android:text="French Teacher"
android:textColor="@color/white"
android:textSize="32sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/blackButton"
android:layout_width="150sp"
android:layout_height="wrap_content"
android:layout_marginTop="200sp"
android:backgroundTint="@color/white"
android:text="Black"
android:textColor="@color/black"
android:textSize="30sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView3" />
<Button
android:id="@+id/greenButton"
android:layout_width="150sp"
android:layout_height="wrap_content"
android:layout_marginTop="60sp"
android:backgroundTint="@color/white"
android:text="Green"
android:textColor="#45FA02"
android:textSize="30sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/blackButton" />
<Button
android:id="@+id/purpleButton"
android:layout_width="150sp"
android:layout_height="wrap_content"
android:layout_marginTop="60sp"
android:backgroundTint="@color/white"
android:text="Purple"
android:textColor="#A61AF3"
android:textSize="30sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/greenButton" />
<Button
android:id="@+id/redButton"
android:layout_width="150sp"
android:layout_height="wrap_content"
android:layout_marginTop="60sp"
android:backgroundTint="@color/white"
android:text="Red"
android:textColor="#FB5B11"
android:textSize="30sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/purpleButton" />
<Button
android:id="@+id/yellowButton"
android:layout_width="150sp"
android:layout_height="wrap_content"
android:layout_marginTop="60sp"
android:backgroundTint="@color/white"
android:text="Yellow"
android:textColor="#FFF27F"
android:textSize="30sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/redButton" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_begin="1028dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
请帮忙,我正在疯狂地试图解决这个问题,因为这对我来说毫无意义。
请注意:
我已经尝试过 SP 和 DP 的尺寸,没有什么区别
预览不是问题,我知道问题在哪里,并且已经在每种可能的预览设备上进行了尝试。唯一与我的 S24 显示类似的设备是 Pixel 3?这毫无意义,因为它更小且 DPI 更低
我已将上面的代码粘贴到我的android studio中,查看输出 (我已将背景更改为蓝色,因为您的背景可用,您可以使用您的背景设置)
现在我已经设置为您想要的输出,如上图所示
代码:
<?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:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/blueLight">
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="52dp"
android:text="French Teacher"
android:textColor="@color/white"
android:textSize="32sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/blackButton"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:backgroundTint="@color/white"
android:layout_marginTop="110dp"
android:text="Black"
android:textColor="@color/black"
android:textSize="30sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView3" />
<Button
android:id="@+id/greenButton"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:backgroundTint="@color/white"
android:layout_marginTop="30dp"
android:text="Green"
android:textColor="#45FA02"
android:textSize="30sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/blackButton" />
<Button
android:id="@+id/purpleButton"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:backgroundTint="@color/white"
android:layout_marginTop="30dp"
android:text="Purple"
android:textColor="#A61AF3"
android:textSize="30sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/greenButton" />
<Button
android:id="@+id/redButton"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:backgroundTint="@color/white"
android:layout_marginTop="30dp"
android:text="Red"
android:textColor="#FB5B11"
android:textSize="30sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/purpleButton" />
<Button
android:id="@+id/yellowButton"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:backgroundTint="@color/white"
android:layout_marginTop="30dp"
android:text="Yellow"
android:textColor="#FFF27F"
android:textSize="30sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/redButton" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_begin="1028dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
我的输出:
在android studio中,有时设计中定义的像素不会在android屏幕中设置,因此您必须在android studio xml设计中手动设置像素。
嗯...您使用 sp 作为边距而不是 dp 有什么原因吗?
sp 只能用于文本的字体大小,不能用于布局边距/填充。