ViewGroup
ViewGroup
其他View的容器,作为父布局
View作为子视图
LinearLayout 线性布局
子视图排成垂直的一排,也可以水平排列
RelativeLayout 相对布局
子视图与父布局相对排列,也可以子视图之间相对排列
<LinearLayout //父布局,将子视图放入双标签内
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView //子视图
android:text="Guest List"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView //子视图
android:text="Kunal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
父布局也有属性和值,如
xmlns:android="http://schemas.android.com/apk/res/android"
XML 命名空间说明,用命名空间来指定Android属性,这就是为什么属性前都有个(Android:)(即表示这些是Android属性),实际上是特指给Android的URL速记属性。为了避免名字上的冲突(即属性被设为同一个名字,却又不同的行为)得在这里加前缀。
android:orientation="vertical" //horizontal
android:layout_width="wrap_content"
android:layou_height="wrap_content"
视图大小
android:layout_width="match_parent"
android:layout_height="match_parent"
//与父布局的宽高等同
对于有下划线的属性 如 android:layout_width
,这些是由父布局处理,决定视图大小、位置参数
对于其他属性 如 android:textSize
,这些是由子视图风格化自己视图来处理
在线性布局中均匀分布
android:layout_height="0dp"
android:layout_weight="1" //布局权重,与其他子视图占整个屏幕比例
先将该视图的height设置为0dp,然后排列其他子视图,再根据剩余空间按权重分配高度给该视图
vertical LinearLayout 设置layout_htight="0dp"
horizontal LinearLayout设置layout_width="0dp"
RelativeLayout
对于单独一个子视图来说
android:layout_alignPatentTop="true"//与父视图的上边缘对齐
android:layout_alignPatentBotton="true"//与父视图的下边缘对齐
android:layout_alignPatentRight="true"//与父视图的右边缘对齐
android:layout_alignPatentLeft="true"//与父视图的左边缘对齐
android:layout_horizontal="true"//与父视图垂直居中
android:layout_centerVertical="true"//与父视图水平居中
这些属性都可以搭配使用,android:layout_alignPatentLeft默认为true,其他属性默认为false
对于子视图互相来说
<TextView
android:id="@+id/text_view"//新添加一个id为text_a的文本视图
……
/>
<ImageView
android:layout_toLeftOf=“@id/text_view”//图片在文本视图的左边
……
/>
@+id/text
向资源文件夹中添加id为text的引用(注引用名不能有空格)
@id/text
引用id为text的TextView
android:layout_toRightOf//在其右侧
android:layout_above//在其顶部
android:layout_below//在其底部
padding
android:padding="8dp"
OR
android:paddingTop="8dp"
android:paddingBotton="8dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
视图内容到视图边缘的距离,由视图自己处理
margin
android:margin="8dp"
OR
android:marginTop="8dp"
android:marginBotton="8dp"
android:marginLeft="8dp"
android:marginRight="8dp"
视图边缘与父视图或其他子视图的距离,由父视图ViewGroup处理
Material desdign 建议padding或margin的距离为8dp的倍数
总结
- 模块化,作为独立的类和布局优先构建
- 复用代码