新知识介绍:
layout:布局。我们有很多控件,但是我们要把这些控件如何摆放,怎么样摆放合理、美观,这就是布局了。
有以下几种布局方式:FrameLayout、LinearLayout 、RelativeLayout 、TableLayout 。
现在我们来介绍前两种:
1、FrameLayout:是 最简单的一个布局对象。它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象 — 比如,一张你要发布的图片。所有的子元素将会固定 在屏幕的左上角;你不能为FrameLayout中的一个子元素指定一个位置。后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡 住(除非后一个子元素是透明的)。
FrameLayout默认填充widget等在左上角,然后后面的控件遮住前面的,比如说有两个TextView,Text内容分别是I am textview 1 和I am textview 2 看到的效果会如下(只显示最新的):
![](https://pe4vna.blu.livefilestore.com/y1mjD8pgB5Y03pQpqWG3kGsknWoLh4HqNpra1Ee0jVaoEAI_ydRRkB8FCo4NoGVQXFfLs3ocfmUacvIHxbPPOV5SILvIvBkZYgYtV5I11qz7zyOH1aPrjMWU4Kah7nRdsFe_LTCVodKssVtBsGga9xW9g/layoutSample-framelayout.bmp) | <?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="htHTMLtp://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="I am textview 1"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="I am textview 2"
/>
</FrameLayout> |
这个布局并不常用,大家可以看看就行了。
1、LinearLayout:单向布局,最常见的布局,可以有横向或者纵向布局。所有的子元素都被堆放在其它元素之后,因此一个垂直列表的每一行只会有一个元素,而不管他们有多 宽,而一个水平列表将会只有一个行高(高度为最高子元素的高度加上边框高度)。LinearLayout保持子元素之间的间隔以及互相对齐(相对一个元素 的右对齐、中间对齐或者左对齐)。
LinearLayout 还支持为单独的子元素指定weight。好处就是允许子元素可以填充屏幕上的剩余空间。这也避免了在一个大屏幕中,一串小对象挤成一堆的情况,而是允许他们放大填充空白。子元素指定一个weight值,剩余的空间就会按这些子元素指定的weight比例分配给这些子元素。默认的weight值为0。例如,如 果有三个文本框,其中两个指定了weight值为1,那么,这两个文本框将等比例地放大,并填满剩余的空间,而第三个文本框不会放大。
LinearLayout是Android sdk创建project时的默认Layout,支持两种方式,默认是垂直vertical的线性layout,另一个是水平horizontal方向的线性排列。
话不多说,看代码:
这个是横向排列,"vertical":
![](https://pe4vna.blu.livefilestore.com/y1mWoksSQMxhtXP3ssTQ6qqjUAjq_IU02zM4nIWTBGd9dOz3m0vGcArtNRtB7rzqtd2a0lDX_1nUa8U7LBhLOds1HXnMSSrtPlmsSVQM3AUNBT6G2Y-59ZCiE2FMQrQLxuhMRS2WVsAD3MiuNW_VKEHMQ/layoutSample-linearLayout.bmp) | <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="I am textview 1"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="I am textview 2"
/>
</LinearLayout> |
这个是纵向排列,"horizontal":
![](https://pe4vna.blu.livefilestore.com/y1mo3EEi4-FOUVWreOS9LNbmPZqkuf_4wUsW08Qobb3lwGmNEifxS-H23y-_iir2eDOC2h6BuhAWd2lBMJlKGfcFPyjkHdwrUgzrYxNgbdpNH7SGY0k8g_2av5Ccb1roYvl3toqEODXHjL0Bs8YP8dvjA/layoutSample-linearLayout2.bmp) | <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="10px"
android:layout_height="fill_parent"
android:text="I am textview 1"
/>
<TextView
android:layout_width="10px"
android:layout_height="wrap_content"
android:text="I am textview 2"
/>
</LinearLayout> |
怎么样,现在清楚了吧? 至于weight,大家可以下去调试,下节课我将讲解。
我上传的附件是横向和纵向相结合的布局,可以看看。
搞定,打完收工!