Android 常用布局
目录
1、[LinearLayout(线性布局)](#linearlayout)
2、[RelativeLayout(相对布局)](#relativelayout)
3、[FrameLayout(帧布局)](#framelayout)
4、[TableLayout(表格布局)](#tablelayout)
5、[ConstraintLayout(约束布局)](#constraintlayout)
LinearLayout(线性布局)
LinearLayout 是 Android 中最常用的布局之一,它按照水平或者垂直的线性顺序依次排列子控件,通过 android:orientation 属性可以指定排列的方向。
属性介绍
android:orientation:指定排列方向,可以是 vertical(垂直)或 horizontal(水平)。
android:layout_weight:设置控件在布局中的权重,用于分配剩余空间。
android:gravity:设置控件在其容器中的对齐方式。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 1"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 2"/> </LinearLayout>
示例代码
LinearLayout linearLayout = new LinearLayout(this); linearLayout.setOrientation(LinearLayout.VERTICAL); Button button1 = new Button(this); button1.setText("Button 1"); Button button2 = new Button(this); button2.setText("Button 2"); linearLayout.addView(button1); linearLayout.addView(button2);
RelativeLayout(相对布局)
RelativeLayout 允许子控件相对于其他控件或父容器进行定位,通过使用 android:layout_below、android:layout_toRightOf 等属性,可以实现复杂的用户界面布局。
属性介绍
android:layout_above:将当前控件置于指定控件之上。
android:layout_below:将当前控件置于指定控件之下。
android:layout_toLeftOf:将当前控件置于指定控件左侧。
android:layout_toRightOf:将当前控件置于指定控件右侧。
android:layout_alignParentTop:将控件与父容器顶部对齐。
android:layout_centerInParent:将控件置于父容器中心。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/relativeLayout1" android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 1"/> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/button1" android:text="Button 2"/> </RelativeLayout>
示例代码
RelativeLayout relativeLayout = new RelativeLayout(this); Button button1 = new Button(this); button1.setText("Button 1"); RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT ); params1.addRule(RelativeLayout.ALIGN_PARENT_TOP); relativeLayout.addView(button1, params1); Button button2 = new Button(this); button2.setText("Button 2"); RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT ); params2.addRule(RelativeLayout.BELOW, button1.getId()); relativeLayout.addView(button2, params2);
FrameLayout(帧布局)
FrameLayout 是最简单的布局之一,所有的子控件都堆放在屏幕的左上角,并且后添加的控件会覆盖先添加的控件。
属性介绍
android:layout_gravity:设置子控件在 FrameLayout 中的位置。
android:foreground:为 FrameLayout 设置前景图像。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/frameLayout1" android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 1"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|right" android:text="Button 2"/> </FrameLayout>
示例代码
FrameLayout frameLayout = new FrameLayout(this); Button button1 = new Button(this); button1.setText("Button 1"); frameLayout.addView(button1); Button button2 = new Button(this); button2.setText("Button 2"); FrameLayout.LayoutParams params2 = new FrameLayout.LayoutParams( FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM | Gravity.RIGHT ); frameLayout.addView(button2, params2);
TableLayout(表格布局)
TableLayout 以行和列的形式管理子控件,每一行由一个 TableRow 表示,适合创建表格形式的布局。
属性介绍
android:shrinkColumns:设置可收缩的列。
android:stretchColumns:设置可伸展的列。
android:collapseColumns:设置隐藏的列。
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tableLayout1" android:layout_width="match_parent" android:layout_height="wrap_content"> <TableRow> <Button android:text="Button 1"/> <Button android:text="Button 2"/> </TableRow> <TableRow> <Button android:text="Button 3"/> <Button android:text="Button 4"/> </TableRow> </TableLayout>
示例代码
TableLayout tableLayout = new TableLayout(this); tableLayout.setStretchAllColumns(true); // 设置所有列可伸展 tableLayout.setShrinkAllColumns(true); // 设置所有列可收缩 TableRow row1 = new TableRow(this); Button button1 = new Button(this); button1.setText("Button 1"); row1.addView(button1); Button button2 = new Button(this); button2.setText("Button 2"); row1.addView(button2); tableLayout.addView(row1); TableRow row2 = new TableRow(this); Button button3 = new Button(this); button3.setText("Button 3"); row2.addView(button3); Button button4 = new Button(this); button4.setText("Button 4"); row2.addView(button4); tableLayout.addView(row2);
ConstraintLayout(约束布局)
ConstraintLayout 允许更灵活地控制子控件的位置,非常适合复杂布局,通过约束条件,可以将控件放在相对位置,避免嵌套布局,提高性能。
属性介绍
app:layout_constraintLeft_toLeftOf:将控件的左边与另一个控件的左边对齐。
app:layout_constraintTop_toBottomOf:将控件的顶部与另一个控件的底部对齐。
app:layout_constraintRight_toRightOf:将控件的右边与另一个控件的右边对齐。
app:layout_constraintBottom_toTopOf:将控件的底部与另一个控件的顶部对齐。
app:layout_constraintStart_toStartOf:将控件的开始与另一个控件的开始对齐。
app:layout_constraintEnd_toEndOf:将控件的结束与另一个控件的结束对齐。
app:layout_constraintHorizontal_bias:设置水平偏差比例。
app:layout_constraintVertical_bias:设置垂直偏差比例。
app:layout_constraintDimensionRatio:设置宽高比。
app:layout_constraintCircle:设置圆形约束。
app:layout_constraintWidth_default:设置默认宽度约束。
app:layout_constraintHeight_default:设置默认高度约束。
app:layout_editor_absoluteX:设置绝对 X 坐标。
app:layout_editor_absoluteY:设置绝对 Y 坐标。
app:layout_constraintGuideline_begin:设置引导线的开始位置。
app:layout_constraintGuideline_end:设置引导线的结束位置。
app:layout_constraintGuideline_percent:设置引导线的百分比位置。
app:layout_goneMarginLeft、app:layout_goneMarginTop、app:layout_goneMarginRight、app:layout_goneMarginBottom、app:layout_goneMarginStart、app:layout_goneMarginEnd:当控件被设置为 GONE 时使用的外边距。
app:layout_constraintVertical_chainStyle:设置垂直链样式。
app:layout_constraintHorizontal_chainStyle:设置水平链样式。
app:layout_constraintHorizontal_bias:设置水平偏差比例。
app:layout_constraintVertical_bias:设置垂直偏差比例。
app:layout_constraintDimensionRatio:设置宽高比。
app:layout_constraintCircle:设置圆形约束。
小伙伴们,上文介绍了“android常用布局”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。