2025-11-07 10:56:59,某些文章具有时效性,若有错误或已失效,请在下方留言。每个布局文件只包含一个根元素,该元素必须是一个View或者 ViewGroup对象。一旦定义了根元素,就可以添加其它布局对象或者小组件作为子元素,以逐步构建定义布局的视图层级结构。
布局文件加载
当编译app的时候,每个XML布局文件都被编译成一个 View 资源。在应用代码的 Activity.onCreate() 回调方法里加载这个布局资源。
通过调用 setContentView() 方法来实现,并将布局资源的引用以以下形式传递给它:R.layout.layout_file_name。
public class MainActivity extends AppCompatActivity {
// onCreate 方法是Android框架在Activity启动时调用方法。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}

常见布局
线性布局(Linear Layout)
一种将其子视图按单一的水平或垂直方向排列的布局。当窗口的内容长度超过屏幕长度时,它会自动创建一个滚动条(scrollbar)。
<?xml version="1.0" encoding="utf-8"?>
<!--
android:orientation="vertical" 设置排列的方向
-->
<LinearLayout
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:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text Number 1"
android:textSize="18sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text Number 2"
android:textSize="18sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text Number 3"
android:textSize="18sp"/>
</LinearLayout>
效果图,如下所示
![图片[2]-布局 (Layout)-Stewed Noodles 资源](https://cdn.sa.net/2025/11/07/qbgn9k3YW5Sl1zM.webp)
相对布局(Relative Layout)
允许你根据其它子视图(例如:子视图 A 位于子视图 B 的左侧)或 父视图(例如:与父视图的顶部对齐)来指定子视图的位置。
<?xml version="1.0" encoding="utf-8"?>
<!--
layout_below: 在某个视图的下方
layout_centerHorizontal: 水平居中
layout_alignLeft: 左对齐
-->
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_centerHorizontal="true"
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text Number 1"
android:textSize="32sp"/>
<TextView
android:layout_alignLeft="@+id/text1"
android:id="@+id/text2"
android:layout_below="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text Number 2"
android:textSize="32sp"/>
</RelativeLayout>
效果图如下所示
![图片[3]-布局 (Layout)-Stewed Noodles 资源](https://cdn.sa.net/2025/11/07/JozfwQ7mubCB4vn.webp)
约束布局(Constraint Layout)
它允许你在 不使用嵌套视图组(即保持扁平的 View 层级) 的情况下,创建大型且复杂的布局。它与 RelativeLayout(相对布局) 类似,所有视图都根据 与同级视图或父布局之间的关系 来进行定位。但 约束布局 比 相对布局 更加灵活,并且在 Android Studio 的布局编辑器 中更易于使用。
ConstraintLayout 基于视图之间的关系工作,这些视图被称为约束。在 ConstraintLayout 中,最核心的部分就是 创建和设置这些约束。
XML中的约束属性:
app:layout_constraint
<SOURCE_ANCHOR>_to<TARGET_ANCHOR>of=”<TARGET_ID>“
<SOURCE_ANCHOR>、<TARGET_ANCHOR>的取值:start、end、top、bottom
<?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">
<TextView
android:id="@+id/firstTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="68dp"
android:text="你好世界!"
android:textSize="32sp"
app:layout_constraintEnd_toEndOf="@+id/secondTextView"
app:layout_constraintHorizontal_bias="0.486"
app:layout_constraintStart_toStartOf="@+id/secondTextView"
app:layout_constraintTop_toBottomOf="@+id/secondTextView" />
<TextView
android:id="@+id/secondTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="56dp"
android:text="另一个 TextView"
android:textSize="32sp"
app:layout_constraintStart_toStartOf="@+id/thirdTextView"
app:layout_constraintTop_toBottomOf="@+id/thirdTextView" />
<TextView
android:id="@+id/thirdTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="60dp"
android:layout_marginTop="96dp"
android:text="欢迎来到我们的课程"
android:textSize="32sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
效果如下图所示
![图片[4]-布局 (Layout)-Stewed Noodles 资源](https://cdn.sa.net/2025/11/07/fDwuXxaIbnMgBy2.webp)










暂无评论内容