温习 基本xml语法

温习 基本视图中的几个属性

本节主要讲解组合布局 LinearLayout 和 RelativeLayout 的使用

使用 google search,查找 关键子 + android

组合布局

  • 在一个界面需要展示多个 view 的时候,就需要用到 组合布局了。也就是 ViewGroup。用 ViewGroup 把多个 view 组合起来。

  • 不能简单地把多个 view 放在一个 xml 文件中:一个 xml 文档中只能有一个 root view,其他的 view 应该放在 root view 里面

  • ViewGroup 也是一种 view,它是一种矩形的 view
    如:LinearLayoutRelativeLayout

  • ViewGroup 是 父view,它里面的其他 view,是其 子view。父view 可以控制 子view 的位置和方式

  • 父view 和 子view 之间是 父子关系;子view 之间是 兄弟关系

线性布局 LinearLayout

  • LinearLayout 中的 view 可以按照水平(horizontal) 或者 竖直(vertical) 的方式排列

  • 线性布局举例
    线性布局举例

  • 等权重子视图:在线性布局中,给各个子视图按比例分配空间
  • 对于垂直线性布局,把子视图的高度android:layout_height设置为 0dp,权重andour:layout_weight设置为1(或者其他数值)
  • 对于水平线性布局,宽度android:layout_width = 0,设置权重 android:layout_weight
  • 设置权重以后,在不同的设备上,就可以按照同样的比例平分屏幕高度

  • 设置权重的练习1
    设置权重举例

  • 设置权重的练习2
    设置权重举例

相对布局 RelativeLayout

  • RelativeLayout 中 view 的排列是相对的,比如 把 子view 放在 父view 的上面 或者 左边;
  • 默认布局:左上角。可同时混搭多个对齐。

  • 也可以是 子view 之间相对排列

  • 相关的属性,值都是 true 或者 false

  • 官方介绍

  • android:id=”@+id/name” 第一次声明需要用到”+”,以后再用,就不需要+

android:layout_alignParentTop 与父视图上边缘对齐

android:layout_alignParentBottom 与父视图下边缘对齐

android:layout_alignParentLeft 与父视图左边缘对齐

android:layout_alignParentRight 与父视图右边缘对齐

android:layout_above 在参考视图的上方

android:layout_below 在参考视图的下方

android:layout_toRightOf 在参考视图的右侧

android:layout_toRightOf 在参考视图的左侧

android:layout_alignTop 目标控件和引用控件的上边缘对齐

android:layout_alignBottom 目标控件和引用控件的下边缘对齐

android:layout_alignLeft 目标控件和引用控件的左边缘对齐

android:layout_alignRight 目标控件和引用控件的右边缘对齐

android:layout_alignBaseLine 基于基准线对齐,基准线就是我们写英文字母那4行线的第三条

layout_centerInParent 表示与父控件在水平方向和垂直方向都对齐,处于正中央

layout_centerVertical 表示与父控件在垂直方向上对齐

layout_centerHorizontal 表示与父控件在水平方向上对齐

layout_alignStart 与引用控件的开始位置对齐

layout_alignStop 与引用控件的结束位置对齐

layout_alignParentStart 表示与父控件的开始位置对齐

layout_alignParentStop 表示与父控件的位置对齐

  • 相对视图布局举例
    相对视图布局举例

  • android:padding和android:layout_margin的区别

padding是站在父view的角度描述问题,它规定它里面的内容必须与这个父view边界的距离。margin则是站在自己的角度描述问题,规定自己和其他(上下左右)的view之间的距离,如果同一级只有一个view,那么它的效果基本上就和padding一样了。例如我的XML layout代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="10dip"
android:paddingRight="10dip"
android:paddingTop="10dip"
android:paddingBottom="10dip"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FF0000"
android:text="@string/hello"
android:paddingLeft="50dip"
android:paddingRight="50dip"
android:paddingTop="50dip"
android:paddingBottom="50dip"
android:layout_marginBottom="10dip"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FF0000"
android:text="@string/hello"
android:paddingLeft="50dip"
android:paddingRight="50dip"
android:paddingTop="50dip"
android:paddingBottom="50dip"
android:layout_marginBottom="10dip"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FF0000"
android:text="@string/hello"
android:paddingLeft="50dip"
android:paddingRight="50dip"
android:paddingTop="50dip"
android:paddingBottom="50dip"
android:layout_marginBottom="10dip"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FF0000"
android:text="@string/hello"
android:paddingLeft="50dip"
android:paddingRight="50dip"
android:paddingTop="50dip"
android:paddingBottom="50dip"
android:layout_marginBottom="10dip"
/>
</LinearLayout>

  • android:padding和android:layout_margin举例
    padding 和margin 举例

要点

  • 记得使用 明明空间 “xmlns:android=””
  • 熟练使用布局的几种属性值