`

android 的 4 layout

阅读更多


FrameLayout
FrameLayout是最简单的一个布局对象。它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象 — 比如,一张你要发布的图片。所有的子元素将会固定在屏幕的左上角;你不能为FrameLayout中的一个子元素指定一个位置。后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡住(除非后一个子元素是透明的)。
LinearLayout
LinearLayout以你为它设置的垂直或水平的属性值,来排列所有的子元素。所有的子元素都被堆放在其它元素之后,因此一个垂直列表的每一行只会有一个元素,而不管他们有多宽,而一个水平列表将会只有一个行高(高度为最高子元素的高度加上边框高度)。LinearLayout保持子元素之间的间隔以及互相对齐(相对一个元素的右对齐、中间对齐或者左对齐)。
LinearLayout 还支持为单独的子元素指定weight。好处就是允许子元素可以填充屏幕上的剩余空间。这也避免了在一个大屏幕中,一串小对象挤成一堆的情况,而是允许他们放大填充空白。子元素指定一个weight值,剩余的空间就会按这些子元素指定的weight比例分配给这些子元素。默认的weight值为0。例如,如果有三个文本框,其中两个指定了weight值为1,那么,这两个文本框将等比例地放大,并填满剩余的空间,而第三个文本框不会放大。
下面的两个窗体采用LinearLayout,包含一组的元素:一个按钮,几个标签,几个文本框。两个窗体都为布局做了一番修饰。文本框的 width被设置为FILL_PARENT;其它元素的width被设置为WRAP_CONTENT。默认的对齐方式为左对齐。左边的窗体没有设置 weight(默认为 0);右边的窗体的comments文本框weight被设置为1。如果Name文本框也被设置为1,那么Name和Comments这两个文本框将会有同样的高度。

在一个水平排列的LinearLayout中,各项按他们的文本基线进行排列(第一列第一行的元素,即最上或最左,被设定为参考基线)。因此,人们在一个窗体中检索元素时,就不需要七上八下地读元素的文本了。我们可以在layout的XML中设置 android:baselineAligned=”false”,来关闭这个设置。
TableLayout
TableLayout将子元素的位置分配到行或列中。android的一个TableLayout由许多的TableRow组成,每个 TableRow都会定义一个row(事实上,你可以定义其它的子对象,这在下面会解释到)。TableLayout容器不会显示row、cloumns 或cell的边框线。每个row拥有0个或多个的cell;每个cell拥有一个 View对象。表格由列和行组成许多的单元格。表格允许单元格为空。单元格不能跨列,这与HTML中的不一样。下图显示了一个TableLayout,图中的虚线代表不可视的单元格边框。

以下为这个TableLayout的XML描述:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:stretchColumns="1">
    <TableRow>
        <TextView
           android:text="@string/table_layout_4_open"
           android:padding="3dip" />
        <TextView
           android:text="@string/table_layout_4_open_shortcut"
           android:gravity="right"
           android:padding="3dip" />
    </TableRow>

    <TableRow>
        <TextView
           android:text="@string/table_layout_4_save"
           android:padding="3dip" />
        <TextView
           android:text="@string/table_layout_4_save_shortcut"
           android:gravity="right"
           android:padding="3dip" />
    </TableRow>
</TableLayout>

列可以被隐藏,也可以被设置为伸展的从而填充可利用的屏幕空间,也可以被设置为强制列收缩直到表格匹配屏幕大小。对于更详细信息,可以查看这个类的参考文档。
AbsoluteLayout
AbsoluteLayout可以让子元素指定准确的x/y坐标值,并显示在屏幕上。(0, 0)为左上角,当向下或向右移动时,坐标值将变大。AbsoluteLayout没有页边框,允许元素之间互相重叠(尽管不推荐)。我们通常不推荐使用 AbsoluteLayout,除非你有正当理由要使用它,因为它使界面代码太过刚性,以至于在不同的设备上可能不能很好地工作。
RelativeLayout
RelativeLayout允许子元素指定他们相对于其它元素或父元素的位置(通过ID指定)。因此,你可以以右对齐,或上下,或置于屏幕中央的形式来排列两个元素。元素按顺序排列,因此如果第一个元素在屏幕的中央,那么相对于这个元素的其它元素将以屏幕中央的相对位置来排列。如果使用XML来指定这个layout,在你定义它之前,被关联的元素必须定义。
这是一个RelativeLayout例子,其中有可视的和不可视的元素。基础的屏幕layout对象是一个RelativeLayout对象。

以下为这个RelativeLayout的XML描述:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:background="@drawable/blue"
   android:padding="10px">

    <TextView android:id="@+id/label"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:text="Type here:" />

    <EditText android:id="@+id/entry"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:background="@android:drawable/editbox_background"
       android:layout_below="@id/label" />

    <Button android:id="@+id/ok"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@id/entry"
       android:layout_alignParentRight="true"
       android:layout_marginLeft="10px"
       android:text="OK" />

    <Button android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_toLeftOf="@id/ok"
       android:layout_alignTop="@id/ok"
       android:text="Cancel" />
</RelativeLayout>

这个视图显示了屏幕元素的类名称,下面是每个元素的属性列表。这些属性一部份是由元素直接提供,另一部份是由容器的LayoutParams成员(RelativeLayout的子类)提供。RelativeLayout参数有 width,height,below,alignTop,toLeft,padding和marginLeft。注意,这些参数中的一部份,其值是相对于其它子元素而言的,所以才RelativeLayout。这些参数包括toLeft,alignTop和below,用来指定相对于其它元素的左,上和下的位置。
本文来自 13COM.NET, 本文地址:http://www.13com.net/article/article.asp?articleid=1040

分享到:
评论

相关推荐

    Android 五种Layout 布局

    在Android开发中,布局(Layout)是构建用户界面的基础元素,它定义了屏幕上各个组件的排列方式和相互关系。本文将深入探讨Android的五种主要布局:LinearLayout、RelativeLayout、FrameLayout、GridLayout以及...

    Android自定义Layout布局

    本篇文章将深入探讨如何在Android中进行自定义Layout布局的开发。 首先,创建自定义Layout首先要创建一个新的Java类,继承自`ViewGroup`或`LinearLayout`等现有布局。选择`ViewGroup`是因为它是所有布局的基础类,...

    android 各种Layout用到的一些重要的属性

    ### Android各种Layout的重要属性 #### 一、第一类:布尔属性值 这一类属性值主要用来控制视图在容器中的位置关系,常见的属性包括: - **`android:layout_centerHorizontal`**:设置此属性为 `true` 可以使视图...

    Android Layout样式布局

    ### Android Layout样式布局详解 #### 一、概述 在Android应用开发中,界面设计是非常重要的一环,而界面设计的核心就是布局(Layout)。布局决定了应用界面的结构与外观,是用户体验好坏的重要因素之一。本文将...

    android layout

    ### Android Layout 概述 在Android开发中,`Layout`起着至关重要的作用,它用于组织和排列用户界面中的各种视图(View)组件。通过使用不同的布局方式,开发者可以创建出灵活且适应不同屏幕尺寸的应用界面。本文将...

    Android的Layout完全介绍

    Android的Layout完全介绍 在Android开发中,Layout是构建用户界面的关键组成部分,用于组织和定位应用中的各种View组件。本文将详细介绍几种主要的Layout类型及其特点。 1. FrameLayout FrameLayout是最基础的布局...

    androidlayout-marginBottom的值为负数.docx

    在Android布局设计中,`android:layout_margin`属性用于设置View与周围元素的边距,包括`android:layout_marginTop`、`android:layout_marginBottom`、`android:layout_marginLeft`和`android:layout_marginRight`。...

    android的layout布局详解

    主要是针对android初学者对于android的layout布局不是很清楚的人

    android_layout属性大全

    android_layout属性大全,包括layou的各种属性的汉语意思.方便查找对应个属性

    android-layout中的一些对齐属性介绍

    #### `android:layout_alignBaseline`, `android:layout_alignBottom`, `android:layout_alignLeft`, `android:layout_alignRight`, `android:layout_alignTop` 这一系列属性用于精确控制视图之间的对齐方式,包括...

    android Layout

    在Android开发中,布局(Layout)是构建用户界面的核心组件,它定义了屏幕上各个视图控件的位置和排列方式。Android提供了五种主要的布局管理器,每种都有其特定的用途和优势,使得开发者能够根据应用的需求创建出...

    Android 方形layout界面

    android:layout_width="match_parent" android:layout_height="match_parent" android:stretchColumns="*"&gt; ``` 2. **创建TableRow** 对于每个图片,我们需要一个`TableRow`来放置。`TableRow`的默认行为是...

    Android FloatLayout的简单使用.zip

    在Android开发中,FloatLayout可能是一个自定义布局,它扩展了Android的基础布局系统,提供了更灵活的元素定位方式。这个压缩包"Android FloatLayout的简单使用.zip"包含了关于如何使用FloatLayout的相关资料,让...

    Android_layout.rar_android_android 布局_layout

    在Android开发中,布局(Layout)是构建用户界面的核心元素,它定义了应用程序屏幕上元素的排列方式和相互关系。Android提供了多种布局管理器,如LinearLayout、RelativeLayout、ConstraintLayout等,每种布局都有其...

    android layout例子

    在Android开发中,布局(Layout)是构建用户界面的核心组件,它定义了屏幕上元素的排列方式和相互关系。本篇文章将深入探讨`android layout`的例子,以及如何在Android应用程序中调用和使用布局。 首先,Android...

    android layout id converter

    4. **`android layout id converter`工具** `OffingHarbor.jar`可能是这个转换工具的实现,而`1.3.txt`可能包含的是工具的使用说明或者版本更新日志。这个工具可能提供以下功能: - 输入旧ID,输出新ID - 批量...

    Android实现可滑动删除的Layout

    本篇将详细介绍如何在Android中实现可滑动删除的Layout,主要依赖于一个名为SwipeLayout的库。 SwipeLayout是由Android开发者James Smith创建的一个开源库,它提供了一种简单的方式来实现类似抽屉效果的滑动删除...

    Android Layout ID Converter

    【Android Layout ID Converter】是一款专为Android开发者设计的高效工具,它主要功能是帮助开发者快速地将布局文件(layout XML)中的元素ID转换为可读性更强的形式,从而提高代码的可维护性和团队协作效率。...

    android tab layout 实例

    【Android Tab Layout 实例】 在Android开发中,Tab Layout是一种常用的UI组件,它允许用户通过不同的标签页来浏览和切换不同的内容区域。这种布局模式在许多应用中都非常常见,如新闻阅读器、音乐播放器或者设置...

Global site tag (gtag.js) - Google Analytics