转贴 layout of android

1. Absoute layout

不提倡使用。因为需要手工配置每一个View的位置,且每个位置都是绝对位置。在任何时候需要改变的时候,都不方便。

2. Frame layout
每一行显示一个图标。如果两个图标在一起的话,图标会overlap. 当图标之间发生overlap的时候,就会以overlap的形式布局。
FrameLayout有这样一个用处:就是界面元素若需要通过程序控制其可见性,可以使用FrameLayout.

使用 android:visibility 属性,它有三个值
visible - 显示;
invisible -不可见,但是依然占据位置;
gone - 不可见,并不占据位置;

3. LinearLayout
在一行单独组织界面元素,可以通过属性android:orientation 设置水平组织方式界面元素android:orientation="horizontal";
设置垂直方式组织界面元素
android:orientation="vertical"

可以嵌套使用LinearLayout,也就是在一个LinearLayout中使用另一个LinearLayout.

NOTE: nested layout 并不局限于一种形式的layout。比如可以把LinearLayout嵌套在Frame layout 里。

4.RelativeLayout
这是一个相对来说复杂的布局方式。
每个界面元素都是相对于其他元素的位置来布局。
参考:http://www.learn-android.com/2010/01/05/android-layout-tutorial/5/

5. TableLayout
Table布局。只需在XML里定义row, android自动调整column。
如果一个row需要占据3个column,则可以通过android:layout_span=3来设置。

默认情况下:
如果一个元素需要放在一个row里,要放到哪里呢?android默认把它放在这个row的第一个没有被占用的column。
如果想特定地把一个元素放在一个column,那么需要用 ndroid:layout_column 来设置。

6. AlternateLayout
在LinearLayout中,如果在一行放了太多的界面元素,那么很可能发生在一行显示空间不够,界面元素发生重叠现象。
这种问题,往往和屏幕大小,和屏幕的现实方向有关系。
比如,在水平方向显示没有问题,但是在垂直方式显示会有overlap.

那么解决这个问题的方式就是AlternateLayout。

在读取res/layout folder中layout XML的时候,android首先会在查看一下三种布局

res/layout-land – The alternate layout for a landscape UI
res/layout-port – The alternate layout for a portrait UI
res/lauout-square – The alternate layout for a square UI

在res下建立一个folder, 名为layout-land,原来正常显示的XML放在这个文件夹下一份。

你可能感兴趣的:(Android,UI,XML)