android系列之Layout学习笔记

1.Linearout

权重的用法:

1.wrap_content

设置A的weight=1;B的weight=2;C的weight=3即可按照比例显示

2.fill_parent/match_parent

设置A的weight=1;B的weight=2;C的weight=3

用下面这个公式计算:

1-3=-2(只有一个屏幕,但是有三个fill_parent)

A     :1+(-2)*1/6=2/3

B      :1+(-2)*2/6=1/3

C      :1+(-2)*3/6=0

经过test发现关于在父容器中设置gravity和控件中设置layout_gravity的矛盾显示:

父容器的orientation设置成什么,父容器的什么方向的操作就可以掩盖子控件,而在另一个方向上则是子控件的操作掩盖父容器的操作。由此也可以看出是无法将两个子控件一个放在左上角,另一个放在右下角的。

2.RelativeLayout

1.margin和padding的区别

margin是相对于控件来说的,而padding是相对于控件中的内容来说的

3.TableView

三个常用属性:

android:collapseColumns:设置需要被隐藏的列的序号
android:shrinkColumns:设置允许被收缩的列的列序号

android:stretchColumns:设置运行被拉伸的列的列序号

应该注意的是序号从0开始

个人认为Table View还有一个优点,它可以通过增加无用控件来达到适配各种机型的目的;

4.FrameLayout

前景图像:永远处于帧布局最上面,直接面对用户的图像,就是不会被覆盖的图片。

两个属性:

  • android:foreground:*设置改帧布局容器的前景图像
  • android:foregroundGravity:设置前景图像显示的位置

这个布局直接在屏幕上开辟出一块空白的区域,当我们往里面添加控件的时候,会默认把他们放到这块区域的左上角,而这种布局方式却没有任何的定位方式,所以它应用的场景并不多;帧布局的大小由控件中最大的子控件决定,如果控件的大小一样大的话,那么同一时刻就只能看到最上面的那个组件!后续添加的控件会覆盖前一个!虽然默认会将控件放置在左上角,但是我们也可以通过layout_gravity属性,指定到其他的位置!

5.GridLayout


  • step 1:先定义组件的对其方式 android:orientation 水平或者竖直,设置多少行与多少列
  • step 2:设置组件所在的行或者列,记得是从0开始算的,不设置默认每个组件占一行一列
  • step 3:设置组件横跨几行或者几列;设置完毕后,需要在设置一个填充:android:layout_gravity = "fill"

因为GirdLayout是4.0后才推出的,所以minSDK版本要改为14或者以上的版本,不然写布局代码的时候,这玩意就会莫名其妙地出错,说找不到这个GridLayout,当然,如果你要低版本兼容的话,就要看下面的内容了!

低版本sdk如何使用GridLayout:

解决方法很简单:只需要导入v7包的gridlayout包即可!v7包一般在sdk下的:sdk\extras\android\support\v7\gridlayout目录下如果你没有的话,也可以到这里下载: gridlayout_v7_jay.rar 但是用的时候,标签却是这样写的:

<android.support.v7.widget.GridLayout>` 

6.AbsoluteLayout

这个布局很少用到,就先不mark啦。

7.今天看小例子收获的一个知识点

http://blog.csdn.net/Small_Lee/article/details/51451358