SJ46 初识ViewGroup,父与子

ViewGroup


ViewGroup

其他View的容器,作为父布局
View作为子视图

LinearLayout 线性布局
子视图排成垂直的一排,也可以水平排列

RelativeLayout 相对布局
子视图与父布局相对排列,也可以子视图之间相对排列



    
    
    
    

父布局也有属性和值,如

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

对于子视图互相来说



@+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"
SJ46 初识ViewGroup,父与子_第1张图片
padding.png

视图内容到视图边缘的距离,由视图自己处理

margin

android:margin="8dp"
OR
android:marginTop="8dp"
android:marginBotton="8dp"
android:marginLeft="8dp"
android:marginRight="8dp"
SJ46 初识ViewGroup,父与子_第2张图片
margin.png

视图边缘与父视图或其他子视图的距离,由父视图ViewGroup处理

Material desdign 建议padding或margin的距离为8dp的倍数

总结

  1. 模块化,作为独立的类和布局优先构建
  2. 复用代码

你可能感兴趣的:(SJ46 初识ViewGroup,父与子)