`
awfwxf
  • 浏览: 70362 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Android通用布局对象

阅读更多
FrameLayout

FrameLayout is the simplest layout object. It is intended as a blank reserved space on your screen that you can later fill with a single object — for example, a picture that you'll swap out. All child elements are pinned to the top left corner of the screen; you cannot specify a location for a child of a FrameLayout. Later children will simply be drawn over earlier objects, partially or totally obscuring them (unless the newer object is transparent).

FrameLayout是最简单的一个布局对象。它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象 — 比如,一张你要发布的图片。所有的子元素将会固定在屏幕的左上角;你不能为FrameLayout中的一个子元素指定一个位置。后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡住(除非后一个子元素是透明的)。




LinearLayout

A LinearLayout aligns all children in a single direction — vertically or horizontally, depending on what property you set on the LinearLayout. All children are stacked one after the other, so a vertical list will only have one child per row, no matter how wide they are, and a horizontal list will only be one row high (the height of the tallest child, plus padding). LinearLayout respects margins between children, and also gravity (right, center, or left alignment of a child).

LinearLayout以你为它设置的垂直或水平的属性值,来排列所有的子元素。所有的子元素都被堆放在其它元素之后,因此一个垂直列表的每一行只会有一个元素,而不管他们有多宽,而一个水平列表将会只有一个行高(高度为最高子元素的高度加上边框高度)。LinearLayout保持子元素之间的间隔以及互相对齐(相对一个元素的右对齐、中间对齐或者左对齐)。

LinearLayout also supports assigning a weight to individual children. This value allows children to expand to fill any remaining space on a screen. This prevents a list of small objects from being bunched to one end of a large screen, allowing them to expand to fill the space. Children specify a weight value, and any remaining space is assigned to children in the proportion of their declared weight. Default weight is zero. So, for example, if there are three text boxes, and two of them declare a weight of 1, two of them will expand equally to fill the remaining space, and the third will not grow any additional amount.

LinearLayout还支持为单独的子元素指定weight。好处就是允许子元素可以填充屏幕上的剩余空间。这也避免了在一个大屏幕中,一串小对象挤成一堆的情况,而是允许他们放大填充空白。子元素指定一个weight值,剩余的空间就会按这些子元素指定的weight比例分配给这些子元素。默认的weight值为0。例如,如果有三个文本框,其中两个指定了weight值为1,那么,这两个文本框将等比例地放大,并填满剩余的空间,而第三个文本框不会放大。


Tip: To create a proportionate size layout on the screen, create a container object that is fill_parent, assign the children heights or widths of zero, and then assign relative weight values to each child, depending on what proportion of the screen each should take.

Tip:为了在屏幕上创建一个按比例安排大小的layout,需要根据这个屏幕上每个元素将按什么比例显示,创建一个指定fill_parent,子元素的height或width为0,且为每一个子元素分配weight值的容器对象。

The following two forms represent a LinearLayout with a set of elements: a button, some labels, some text boxes. Both have padding values to adjust the padding nicely. The text boxes have their width set to FILL_PARENT; other elements are set to WRAP_CONTENT. The gravity, by default, is left. The form on the left has weight values unset (0 by default); the form on the right has the comments text box weight set to 1. If the Name textbox had also been set to 1, the Name and Comments text boxes would be the same height.

下面的两个窗体采用LinearLayout,包含一组的元素:一个按钮,几个标签,几个文本框。两个窗体都为布局做了一番修饰。文本框的width被设置为FILL_PARENT;其它元素的width被设置为WRAP_CONTENT。默认的对齐方式为左对齐。左边的窗体没有设置 weight(默认为0);右边的窗体的comments文本框weight被设置为1。如果Name文本框也被设置为1,那么Name和 Comments这两个文本框将会有同样的高度。


Within a horizontal LinearLayout, items are aligned by the position of their text base line (the first line of the first list element — topmost or leftmost — is considered the reference line). This is so that people scanning elements in a form shouldn't have to jump up and down to read element text in neighboring elements. This can be turned off by setting android:baselineAligned="false" in the layout XML.

在一个水平排列的LinearLayout中,各项按他们的文本基线进行排列(第一列第一行的元素,即最上或最左,被设定为参考基线)。因此,人们在一个窗体中检索元素时,就不需要七上八下地读元素的文本了。我们可以在layout的XML中设置 android:baselineAligned="false",来关闭这个设置。




TableLayout

TableLayout positions its children into rows and columns. A TableLayout consists of a number of TableRow objects, each defining a row (actually, you can have other children, which will be explained below). TableLayout containers do not display border lines for their rows, columns, or cells. Each row has zero or more cells; each cell can hold one View object. The table has as many columns as the row with the most cells. A table can leave cells empty. Cells cannot span columns, as they can in HTML. The following image shows a table layout, with the invisible cell borders displayed as dotted lines.

TableLayout将子元素的位置分配到行或列中。一个TableLayout由许多的TableRow组成,每个 TableRow都会定义一个row(事实上,你可以定义其它的子对象,这在下面会解释到)。TableLayout容器不会显示row、cloumns 或cell的边框线。每个row拥有0个或多个的cell;每个cell拥有一个View对象。表格由列和行组成许多的单元格。表格允许单元格为空。单元格不能跨列,这与HTML中的不一样。下图显示了一个TableLayout,图中的虚线代表不可视的单元格边框。


Columns can be hidden, can be marked to stretch to fill available screen space, or can be marked as shrinkable to force the column to shrink until the table fits the screen. See the reference documentation for this class for more details.

列可以被隐藏,也可以被设置为伸展的从而填充可利用的屏幕空间,也可以被设置为强制列收缩直到表格匹配屏幕大小。对于更详细信息,可以查看这个类的参考文档。




AbsoluteLayout

AbsoluteLayout enables children to specify exact x/y coordinates to display on the screen, where (0,0) is the upper left corner, and values increase as you move down or to the right. Margins are not supported, and overlapping elements are allowed (although not recommended). We generally recommend against using AbsoluteLayout unless you have good reasons to use it, because it is fairly rigid and does not work well with different device displays.

AbsoluteLayout可以让子元素指定准确的x/y坐标值,并显示在屏幕上。(0, 0)为左上角,当向下或向右移动时,坐标值将变大。AbsoluteLayout没有页边框,允许元素之间互相重叠(尽管不推荐)。我们通常不推荐使用 AbsoluteLayout,除非你有正当理由要使用它,因为它使界面代码太过刚性,以至于在不同的设备上可能不能很好地工作。




RelativeLayout

RelativeLayout lets children specify their position relative to each other (specified by ID), or to the parent. So you can align two elements by right border, or make one below another, or centered in the screen. Elements are rendered in the order given, so if the first element is centered in the screen, other elements aligning themselves to that element will be aligned relative to screen center. If using XML to specify this layout (as described later), a referenced element must be listed before you refer to it.

RelativeLayout允许子元素指定他们相对于其它元素或父元素的位置(通过ID指定)。因此,你可以以右对齐,或上下,或置于屏幕中央的形式来排列两个元素。元素按顺序排列,因此如果第一个元素在屏幕的中央,那么相对于这个元素的其它元素将以屏幕中央的相对位置来排列。如果使用XML来指定这个layout,在你定义它之前,被关联的元素必须定义。

Here is an example relative layout with the visible and invisible elements outlined. The root screen layout object is a RelativeLayout object.

这是一个RelativeLayout例子,其中有可视的和不可视的元素。基础的屏幕layout对象是一个RelativeLayout对象。


This diagram shows the class names of the screen elements, followed by a list of the properties of each. Some of these properties are supported directly by the element, and some are supported by its LayoutParams member (subclass RelativeLayout for all the elements in this screen, because all elements are children of a RelativeLayout parent object). The RelativeLayout parameters are width, height, below, alignTop, toLeft, padding, and marginLeft. Note that some of these parameters support values relative to other children — hence the name RelativeLayout. These include the toLeft, alignTop, and below properties, which indicate the object to the left, top, and below respectively.

这个视图显示了屏幕元素的类名称,下面是每个元素的属性列表。这些属性一部份是由元素直接提供,另一部份是由容器的 LayoutParams成员(RelativeLayout的子类)提供。RelativeLayout参数有 width,height,below,alignTop,toLeft,padding和marginLeft。注意,这些参数中的一部份,其值是相对于其它子元素而言的,所以才RelativeLayout。这些参数包括toLeft,alignTop和below,用来指定相对于其它元素的左,上和下的位置。



重要View Group摘要

These objects all hold child UI elements. Some provide visible UI, and others only handle child layout.

这些对象拥有UI子元素。一些提供可视的UI,另一些只处理子元素的布局。

Class         Description

AbsoluteLayout 可以通过精确的坐标(如屏幕像素)指定子对象相对父容器的位置
FrameLayout 负责显示单一对象的Layout
Gallery 一个以水平滚动方式显示有序图片列表的显示器
GridView 显示一个可滚动的有m列n行的表格
LinearLayout 以水平或垂直方式显示子元素的Layout。如果窗体的长度超过了屏幕的长度,将会出现滚动条
ListView 显示一个可滚动的单列列表
PopupList 一个独立的带边框的元素弹出列表
RelativeLayout 能够指定子对象相对于其它对象(如A在B的左边)或父对象(如在父容器的顶部)的位置
ScrollView 一个垂直的元素滚动列
Spinner 在一个单行文本框中,同时只显示一个有序列表中的一个项。类似于一个可以水平或垂直滚动的单行listbox
SurfaceView 提供直接访问一个可画图的界面。可以控制在界面顶部的子视图层。SurfaceView是提供给需要直接画像素而不是使用窗体部件的应用使用的。
TabHost 提供一个页签选择列表,监视点击并在一个页签被点击时保证应用切换屏幕。
TableLayout 一个拥有任意行和列的表格layout,每一个单元格拥有窗体部份。行会根据最大的列而自动调整大小。单元格边框不可见。
ViewFlipper 一个在单行文本框中同一时刻只显示一项的列表组件。它可以根据时间周期切换显示项,类似一个幻灯机。
ViewSwitcher 类似ViewFlipper
分享到:
评论

相关推荐

    Android 通用圆角布局源码.zip

    这个"Android 通用圆角布局源码.zip"文件提供了一个解决此类问题的解决方案。它包含了一个名为"rclayout-master"的项目,这个项目是专门为Android应用设计的一个通用的圆角布局库。 首先,我们来理解一下圆角布局的...

    Android-android端通用WebView

    这个“Android-android端通用WebView”项目可能是为了提供一个可复用的、功能丰富的WebView组件,方便开发者快速集成到自己的应用中。下面我们将详细探讨WebView的相关知识点。 1. **WebView的基本使用**: - `...

    Android构建一个通用的WebView

    接下来,我们将深入探讨如何在Android中构建一个通用的WebView。 首先,我们需要在AndroidManifest.xml文件中为WebView应用相应的权限,尤其是网络访问权限,因为WebView通常用于加载网络资源。添加以下代码: ```...

    android 统一管理布局文件

    5. **布局变量和数据绑定**:通过在`layout`目录下创建`activity_main.xml`等布局文件,可以使用数据绑定库将Java/Kotlin对象与布局中的元素关联起来,这样可以简化代码,提高可读性。 6. **利用布局注解预览**:...

    Android通用的筛选栏源码

    在Android开发中,筛选栏(Filter Bar)是一个常见的...通过以上技术点的实践,我们可以构建一个功能强大且易于使用的Android通用筛选栏。参考提供的源码,开发者可以学习到具体的实现细节,并将其应用到自己的项目中。

    Android 20个通用具体应用程序实例源

    2. **Intent通信**:Intent是Android系统中对象间通信的主要方式,可以用于启动Activity、服务或者广播接收器。实例可能包含如何创建Intent,传递数据,并响应Intent。 3. **UI布局设计**:Android提供了多种布局...

    Android-一个简单通用的recyclerView主要实现普通列表和分组列表的大部分需求效果

    在这个项目"Android-一个简单通用的recyclerView主要实现普通列表和分组列表的大部分需求效果"中,我们将会探讨如何使用RecyclerView来满足这些需求。 首先,RecyclerView的核心组件包括Adapter、ViewHolder和...

    Android通用代码开发规范

    ### Android通用代码开发规范 #### 一、应用包名 应用包名的命名遵循固定的格式:`com.公司名.应用名`。这样的命名方式有助于组织项目结构,并且能够清晰地展示出应用所属的公司及具体的应用名称。例如,一个属于...

    Android通用索引栏实现代码

    Android通用索引栏的实现主要是为了提高用户在浏览大量数据时的查找效率,尤其是在城市选择、联系人列表等场景中,通过索引栏可以快速定位到目标内容。本文将详细介绍如何在Android应用中创建一个可复用的索引栏,并...

    Android-item快速布局设置控件例如我的设置关于里面的item

    在Android应用开发中,"Android-item快速布局设置控件例如我的设置关于里面的item"这个话题主要涉及的是如何高效地创建和管理用户界面(UI)中的列表项,通常用于展示如“我的”、“设置”和“关于”等菜单下的各种...

    Android高手进阶教程与Android基础教程

    Android读写XML(上)——package说明.doc Android读写XML(下)——创建XML文档.doc Android读写XML(中)——SAX.doc Android高手进阶教程之----Android Handler的使用!...Android基础教程之----五大布局对象.doc

    java和android通用的方法总结

    这个压缩包文件集合了在Java和Android开发中的一些通用方法,旨在帮助程序员提升开发效率。以下是这些方法的具体总结: 1. **GestureLock**: 这部分可能包含了手势解锁的实现,涉及到Android中的触摸事件处理、...

    android通用适配器

    "Android通用适配器"是为了解决在不同场景下重复编写适配器代码的问题而设计的一种解决方案。这种适配器通常包含了一些常见的功能,如点击事件处理、数据绑定等,可以广泛应用于各种列表展示需求。 博客链接中提到...

    Android下打造通用便捷的PopupWindow弹窗库

    本文将深入探讨如何在Android环境中构建一个通用且便捷的PopupWindow库,提升应用的用户体验和代码复用性。 首先,我们来了解PopupWindow的基本用法。PopupWindow类是Android SDK提供的一个接口,通过它可以创建出...

    Android支持DataBinding的RecyclerView通用Adapter

    1. **自动数据绑定**:通过DataBinding,可以直接在XML布局文件中定义数据绑定,将数据对象与UI元素关联,减少了手动设置视图值的代码。 2. **多类型Item支持**:适配器可能需要展示多种类型的视图,如头部视图、...

    安卓开发框架工具类相关-Android开发的通用工具类.zip

    "安卓开发框架工具类相关-Android开发的通用工具类.zip" 提供了一组可能用于Android应用开发的通用工具类集合。虽然不能保证每个类都能直接运行,但它们可以作为学习和参考的资源,帮助开发者理解常见的功能实现。 ...

    安卓Android源码——比较通用的xml解析方法.rar

    本资料包“安卓Android源码——比较通用的xml解析方法”将深入探讨在Android平台上解析XML的多种方法。 1. DOM解析器(Document Object Model) DOM解析器将整个XML文档加载到内存中,创建一个树形结构,便于遍历和...

    Android入门到精通源代码.

    第6章 Android菜单和布局设计 6.1 菜单(Menu) 6.1.1 上下文菜单(ContextMenu) 6.1.2 选项菜单(OptionsMenu) 6.1.3 基于XML的菜单结构 6.2 界面布局设计 6.2.1 基于XML的布局设计 6.2.2 线性布局(LinearLayout...

    Android studio实现简单的登录跳转源码

    11. `gradle.properties`和`local.properties`: 前者存储通用的Gradle属性,后者则通常包含Android SDK的路径信息。 12. `Test.iml`: 这是Android Studio的模块文件,用于标识该项目中的测试代码。 通过以上知识点...

Global site tag (gtag.js) - Google Analytics