android学习笔记---UI布局

UI布局简介:
在目前的android中,总共有AbsoluteLayout,TableLayout, RelativeLayout LinearLayout、FrameLayout, GridLayout, 共有 六种布局 。目前使用 RelativeLayout LinearLayout、FrameLayout, GridLayout 四种布局的居多,AbsoluteLayout,TableLayout,基本被淘汰。

View及其子元素常用属性:(各种布局及控件的共同属性)
    android: id
    android: background  
    android: onClick      为该控件的单击事件绑定 监听器
    android: padding     设置控件四周的填充区域
    android: visibility     设置该控件是否可见(invisible/visible/ gone
    android: alpha         设置该组件透明度(0-100之间的数值)
    android: layout_height       子组件的布局高度 a
    android: layout_width         子组件的布局宽度
    android: layout_margin      设置子组件的外边距

LinearLayout
(一)、概念:线性布局控制其中的控件或组件横向或纵向排列。不线性布局布局中,每一行或每一列只能放一个控件。并且线性布局不会换行。当控件排列到窗体边缘,后面的控件就被隐藏,而不会显示出来。
线性布局的默认方向是水平方向(Horizontal)。vertical
(二)、 LinearLayout的常用 属性:
1.android:orientation     定义布局内控件或组件的排列方式    可选项:vertical 、 horizontal
2.android:layout_width    定义控件的宽度  可选项:fill_parent / match_parent/ wrap_content/绝对数值
3.android:layout_height    定义控件的高度  可选项:fill_parent / match_parent/ wrap_content /绝对数值
4.android:id   设置控件的id。这样就可以在R.java中自动生成相应的值,在程序中通过findViewById就可以调用。
设置id的格式为:android:id = "@+id/id的名字"
5.android:background     设置控件的背景颜色或背景图片
 例如:android:background="#ffffff"   android:background="@drawable/图片名称"
6.android:layout_weight    设置控件的权重。即各控件在水平或者垂直方向上平均分配。
备注:如果是水平方向设置权重,要将android:layout_width设置为0dp,如果是垂直方向上使用权重,要将android:layout_height设置为0dp。否则权重容易受到高度或宽度的干扰而出现偏差。
7.android:gravity   该属性用来控制该View的内容物的位置。
如果该属性是定义在布局节点中,则该布局中所有控件的位置都受到这个属性的控制。
如果该属性出现在Button、TextView、EditText等控件中,则用来控制这些控件上的文字的位置。
可选项有:top、bottom、left、right、center_vertical、fill_vertical 、 center、fill等等。
8.android:layout_gravity   该属性用于设置控件相对于容器的对齐方式。
可选项有:top、bottom、left、right、center_vertical、center_horizontal 、fill_vertical 、 center、fill等等。
这些可选项中不是适用于每一种布局。在垂直线性布局中,android:gravity为bottom不起作用;而水平线性布局中,android:gravity为right不起作用。
(三)、LinearLayout的特有属性:【重新归纳:去除公共属性后的 特有属性
1、android: orientation    布局管理器内组件的排列方式
2、android: gravity    设置布局管理器内组件的对齐方式
(四)、 LinearLayout 子元素的特有属性:
1、android: layout_weight    子元素在 LinearLayout 中所占 的权重
2、android: layout_gravity     子元素在 LinearLayout 中的对齐方式


RelativeLayout
(一)、概念:指按着控件之间的相对位置来进行布局。
(二)、RelativeLayout特有属性:
1、android: gravity    设置布局容器内子控件的对齐方式    
2、android: ignoreGravity    设置布局管理器内哪个控件不受gravity属性的影响
(三)、RelativeLayout子元素的特有属性: LayoutParams
    A、第一组:指 兄弟控件 之间的相对位置。该组属性的值是另一个控件的id。
  1. layout_toRightOf      该控件在哪个控件的右侧
  2. layout_toLeftOf        该控件在哪个控件的左侧
  3. layout_above           该控件在哪个控件的上侧
  4. layout_below            该控件在哪个控件的下侧

    B、第二组:指 兄弟控件之间 的对齐关系。该组属性的值是另一个控件的id。
  1. layout_alignRight      该控件与哪个控件的右对齐
  2. layout_alignLeft        该控件与哪个控件的左对齐
  3. layout_alignTop        该控件与哪个控件的顶对齐
  4. layout_alignBottom   该控件与哪个控件的底对齐
    C、第三组:指 控件与父布局 之间的对齐关系。该组属性的值是true或者false。
  1. layout_alignParentRight               该控件与父布局控件的右对齐吗?
  2. layout_alignParentLeft                 该控件与父布局控件的左对齐吗?
  3. layout_alignParentTop                 该控件与父布局控件的顶端对齐吗?
  4. layout_alignParentBottom            该控件与父布局控件的底部对齐吗?
  5. layout_centerInParent                  该控件位于父布局控件的中心位置吗?
  6. layout_centerVertical                    该控件位于父布局控件的垂直中心位置吗?
  7. layout_centerHorizontal                该控件位于父布局控件的水平中心位置吗?
【备注:】 sp、dp、dip、pt、px等单位的区别?
  1. dpi    dpi指像素密度。dots per inch  ,即每英寸内像素点的个数。它不是表示长度的单位。
    • 在android中认为:低(120dpi),中(160dpi),高(240dpi),超高(320dpi)。随着技术的增长,实际dpi已经超出这个定义范围。
  2. dip    device independent pixels  ,即与设备无关的像素。目前这个单位已经被dp所取代,而不建议使用dip。
  3. dp     与dip的概念一样。不过dp已经取代了dip。在Android中用来表示非文字大小的尺寸。例如:外边距、内填充等。
    • px = dp * (dpi / 160)
    • 3.7寸屏幕,分辨率320*480手机上,正好1px = 1dp。
  4. sp      scale  independent  pixel  ,即与缩放比例无关的像素。在android中常用来表示文字大小。
  5. px      表示像素。因为同样是200px,但是在不同手机下显示的大小是不同的。
  6. pt      point磅。1磅=1/74英寸
  • xlarge 屏幕至少:960dp x 720dp 
  • large 屏幕至少 :640dp x 480dp 
  • normal 屏幕至少 :480dp x 320dp 
  • small 屏幕至少 :426dp x 320dp
  • 总之:dp是用来定义非文字的尺寸,sp用来定义文字大小。px只用于产生一条一像素的分割线时使用。
GridLayout:网格布局
(一)、GridLayout布局属性:
1、android:alignmentMode
属性说明:设置布局的对齐模式。可以取以下值:
alignBounds -- 对齐子视图边界。
alignMargins -- 对齐子视图边距。

2、android: columnCount   属性说明:GridLayout的最大列数

3、android: rowCount   属性说明:GridLayout的最大行数
4、android:orientation    属性说明:GridLayout中子元素的布局方向。有以下取值: horizontal -- 水平布局。 vertical -- 竖直布局。
5、android:columnOrderPreserved    属性说明: 设置该网格布局是否保留列序号。默认是true。
6、android:rowOrderPreserved   属性说明: 设置该网格布局是否保留行序号。默认是true。
7、android:useDefaultMargins    属性说明: 设置GridLayout使用默认的边距。默认值是false。
(二)、GridLayout子元素的属性:
1、android: layout_column  
属性说明: 显示该控件的列。例如,android:layout_column="0",表示在第1列显示该控件;android:layout_column="1",
表示在第2列显示该控件。
2、android: layout_row
属性说明: 该控件所在行。例如,android:layout_row="0",表示在第1行显示该控件;android:layout_row="1",表示在第2
行显示该控件。它和 android:layout_column类似。
3、android: layout_columnSpan
属性说明: 列合并。即该控件所占的列数。例如,android:layout_columnSpan="2",表示该控件占2列。
 
4、android: layout_rowSpan
属性说明: 行合并。即该控件所占的行数。例如,android:layout_rowSpan="2",表示该控件占2行。
5、android: layout_gravity
   属性说明:该控件的布局方式。选项值:
  • top                      -- 控件置于容器顶部,不改变控件的大小。
  • bottom                -- 控件置于容器底部,不改变控件的大小。
  • left                     -- 控件置于容器左边,不改变控件的大小。
  • right                   -- 控件置于容器右边,不改变控件的大小。
  • center_vertical     -- 控件置于容器竖直方向中间,不改变控件的大小。
  • fill_vertical          -- 如果需要,则往竖直方向延伸该控件。
  • center_horizontal -- 控件置于容器水平方向中间,不改变控件的大小。
  • fill_horizontal      -- 如果需要,则往水平方向延伸该控件。
  • center                -- 控件置于容器中间,不改变控件的大小。
  • fill                     -- 如果需要,则往水平、竖直方向延伸该控件。
  • clip_vertical        -- 垂直剪切,剪切的方向基于该控件的top/bottom布局属性。若该控件的gravity是竖直的:若它的gravity是top的话,则剪切该控件的底部;若该控件的gravity是bottom的,则剪切该控件的顶部。
  • clip_horizontal     -- 水平剪切,剪切的方向基于该控件的left/right布局属性。若该控件的gravity是水平的:若它的gravity是left的话,则剪切该控件的右边;若该控件的gravity是  right的,则剪切该控件的左边。
  • start                  -- 控件置于容器的起始处,不改变控件的大小。
  • end                   -- 控件置于容器的结束处,不改变控件的大小。
FrameLayout:(帧布局)
(一)、FrameLayou布局特有属性:
android:foreground (setForeground(Drawable))设置绘制在所有子控件之上的内容。
android:foregroundGravity(setForegroundGravity(int))设置绘制在所有子控件之上内容的gravity属性 。

(二)、FrameLayout子元素的属性:
(1)layout_width
(2)layout_height
(3)layout_marginLeft
(4)layout_marginTop
(5)layout_marginRight
(6)layout_marginBottom
(7)layout_gravity




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值