安卓学习之路10之布局篇

第一种:LinearLayout(线性布局)

1.概念
LinearLayout是线性布局控件,它包含的子控件将以横向或竖向的方式排列


2.常用属性
android:orientation = "vertical"  ---决定他子类控件的排布方式(vertical 或 horizontal)
android:gravity = "center"
---该属性决定他子类的xy的位置
(常用到的几个属性值:
1>center_vertical:垂直(Y轴)居中
2>center_horizontal:水平(X轴)居中
3>center:水平垂直都居中
4>right:子类控件位于当前布局的右边
5>left:子类控件位于当天布局的左边
6>bottom:子类控件位于当前布局的下边


3.子类控件在LinearLayout中常用到的属性
android:layout_gravity = "bottom"----指子类控件本身在当前父容器的XY的一个位置
android:layout_weight = "1"   ----指本身控件占当前父容器的一个比例
注意:如果layout_height=wrap_content,就按比例显示;
      如果layout_height=match_parent,显示则是反比例。

4.布局之间是相互套用去使用的。


第二种:RelativeLayout(相对布局)
1.RelativeLayout是相对布局控件,它包含的子控件将以控件之间的相对位置或者子类控件相对父类

容器的位置的方式排列
2.子类控件在RelativeLayout中常用到的属性(相对父容器的一个位置)
  以下这些属性不用刻意去记,随着练习就记住了。
android:layout_alignParentLeft = "true"   子类控件相对当前父类容器靠左边
android:layout_alignParentTop  = "true"   子类控件相对父类容器靠上边
android:layout_marginLeft ="41dp"     子类控件距离父类容器左边的距离
android:layout_marginTop = "33dp"     子类控件距离父类容器上边的距离
android:layout_centerInparent = "true"   子类控件相对父类容器即水平居中又垂直居中
android:layout_centerHorizontal = "true"   子类控件相对父类容器水平居中
android:layout_centerVertical = "true"   子类控件相对父类容器垂直居中

3.子类控件相对子类控件的一个位置
android:layout_below = "@+id/button1"  该控件位于给定id控件的底部
android:layout_toRightOf = "@+id/button1"  该控件位于给定id控件的右边
android:layout_above = "@+id/button1"  该控件位于给定id控件的上面
android:layout_toLeftOf = "@+id/button1"   该控件位于给定控件的左边  
android:layout_alignBaseline = "@+id/button1"  该控件的内容与给定id控件的内容在一条线上
android:layout_alignBottom   该控件的底部边缘与给定ID控件的底部边缘对齐
android:layout_alignLeft   该控件的左边边缘与给定ID控件的左边边缘对齐
android:layout_alignRight   该控件的右边缘与给定ID控件的右边缘对齐
android:layout_alignTop   该控件的顶部边缘与给定ID控件的顶部对齐


第三种:FrameLayout(帧布局)
1.在FrameLayout中,所有的子元素都不能被指定放置的位置,它们统统放于这块区域的左上角,并且后面的子元素直接覆盖在前面的子元素之上,将前面的子元素部分和全部遮挡。

2.练习(显示的文字本应该放在string中的,此处为了方便才直接输入)
练习一
    <TextView
        android:layout_gravity="center"
        android:background="#456789"
        android:id="@+id/textView1"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:text="第一个页面" />


    <TextView
        android:layout_gravity="center"
         android:background="#785436"
        android:id="@+id/textView2"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:text="第二个页面" />


    <TextView
        android:layout_gravity="center"
         android:background="#584693"
        android:id="@+id/textView3"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:text="第三个页面" />


    <TextView
        android:layout_gravity="center"
         android:background="#731548"
        android:id="@+id/textView4"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:text="第四个页面" />
效果图


练习2
    <ProgressBar
        android:layout_gravity="center"
        android:id="@+id/progressBar1"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />


    <TextView
        android:layout_gravity="center"
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="80%" />
效果图2



第四种:AbsoluteLayout(开发基本不用到)

1.AbsoluteLayout(绝对布局)可以叫做坐标布局,可以直接指定子元素的绝对位置(xy)
2.由于手机屏幕尺寸差别比较大,使用绝对定位的适应性会比较差,在屏幕的适配上有缺陷(开发中少见到的原因)

3.子类控件的属性
android:layout_x="35dip"  控制当前子类控件的x位置
android:layout_y="40dip"  控制当前子类控件的y位置


第五种 TableLayout
1.TableLayout表格布局模型以行列的形式管理子控件,每一行为一个TableRow的对象,当然也可以是一个View的对象。

2全局属性
android:collapseColumns = "1,2"  //隐藏从0开始的索引列。列直接必须用逗号隔开:1,2,5

android:shrinkCoulumns = "1,2" //收缩从0开始的索引列,当可收缩的列太宽(内容过多)不会被挤出屏幕;列直接必须用逗号隔开:1,2,5;可以用"*"代替收缩所有列,注意一列能同时表示收缩和拉伸。

android:stretchColumns="1,2"  //拉伸从0开始的索引列,以填满剩下的多余空白空间,列直接必须用逗号隔开:1,2,5;可以通过"*"代替收缩所有列,注意一列能同时带上收缩和拉伸。

3内部空间所用属性(这两个属性有时需要手动敲入)
android:layout_column="1"   该控件显示在第2列
android:layout_span = "2"   该控件占据2列

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值