目录
1.线性布局LinearLayout
线性布局类似于用一根线将内部的视图串连起来,内部视图的排列顺序是固定的,要么从上到下,要么从左到右两种排列方式。
Linearlayout核心属性表:
| 属性类别 | 属性名称 | 作用与说明 |
|---|---|---|
| 布局方向 | android:orientation | 决定子视图的排列方向:horizontal(水平)或 vertical(垂直) |
| 内部对齐 | android:gravity | 设置LinearLayout内部所有子视图的对齐方式(如居中、靠右) |
| 子视图对齐 | android:layout_gravity | 设置在父容器内,单个子视图自身的对齐方式。 |
| 权重分配 | android:layout_weight | 为子视图分配剩余空间的权重,值越大,分到的剩余空间越多 |
| 权重总和 | android:weightSum | 定义LinearLayout权重分配的最大总和。若子视图权重和超过此值,以此值为准。 |
1.1布局方向orientation
orientation有两个属性值分别为horizontal(水平)与vertical(垂直),该属性决定内部视图的排列方向。若不指定该属性则默认为水平方向排列即android:orientation="horizontal"。
下面的代码中一个线性布局中包含两个线性布局,外部的线性布局为垂直方向排列,内部的线性布局分别为垂直于水平排列。
<?xml version="1.0" encoding="utf-8"?>
<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:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/textView_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="垂直——1"
android:textSize="20sp"
android:background="@color/red"/>
<TextView
android:id="@+id/textView_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="垂直——2"
android:textSize="20sp"
android:background="@color/red"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/textView_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="水平——1"
android:textSize="20sp"
android:background="@color/red"/>
<TextView
android:id="@+id/textView_4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="水平——2"
android:textSize="20sp"
android:background="@color/red"/>
</LinearLayout>
</LinearLayout>
这是上述代码的效果图,可以看出在内部的线性布局的两个TextView的大小是一样的,如果想要两者按比例分配大小的话就需要用到线性布局的另一个属性android:layout_weight。

1.2权重分配layout_weight
layout_weight属性取值为数字,代表着该视图能够分配到的权重大小。如下面的代码所示,当要设置权重时,有两个方向的权重水平以及垂直。当android:layout_height="0dp"时表示在垂直方向上做权重分配,此时的android:layout_weight设置的值代表着该视图的权重大小,可以理解为占比,比如一个权重大小为1,另一个为3,那么可以将Linearlayout在垂直方向上分割为四份,一份给权重为1的,三份给权重为3的。水平方向上的权重分配类似。
<?xml version="1.0" encoding="utf-8"?>
<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:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:orientation="vertical">
<TextView
android:id="@+id/textView_1"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center"
android:text="垂直——1"
android:textSize="20sp"
android:background="@color/red"/>
<TextView
android:id="@+id/textView_2"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="3"
android:gravity="center"
android:text="垂直——2"
android:textSize="20sp"
android:background="@color/purple_700"/>
</LinearLayout>
<LinearLayout
android:layout_width="400dp"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/textView_3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3"
android:gravity="center"
android:text="水平——1"
android:textSize="20sp"
android:background="@color/red"/>
<TextView
android:id="@+id/textView_4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="水平——2"
android:textSize="20sp"
android:background="@color/purple_700"/>
</LinearLayout>
</LinearLayout>
下面是效果图。可以看出不像前面两个视图大小一致,两个视图按比例1:3分配线性布局大小。

2万+

被折叠的 条评论
为什么被折叠?



