Android开发者指南(26) —— Resource Types - Layout

简介:

前言

本章内容为Android开发者指南的Framework Topics/Application Resources/Resource Types/Layout章节,译为"布局资源",版本为Android 3.2 r1,翻译来自:"呆呆大虾",欢迎访问他的微博:" http://weibo.com/popapa",再次感谢"呆呆大虾" !期待你一起参与翻译Android的相关资料,联系我over140@gmail.com。

 

声明

  欢迎转载,但请保留文章原始出处:) 

    博客园:http://www.cnblogs.com/

Android中文翻译组: http://goo.gl/6vJQl


 

Resources Types - Layout

译者署名: 呆呆大虾

译者微博:http://weibo.com/popapa

版本:Android 3.2 r1

原文

http://developer.android.com/guide/topics/resources/layout-resource.html

 

参见

         声明 Layout

 

布局资源

布局(layout)资源用于定义Activity内用户界面(UI)或者用户界面控件的布局结构。

文件位置:

res/layout/filename.xml

文件名filename将作为资源ID

 

编译后资源的数据类型:

指向View或其子类的资源指针。

 

资源引用:

Java代码:R.layout.filename

XML代码:@[package:]layout/filename

 

语法:

<?xml version="1.0" encoding="utf-8"?>

          <ViewGroup xmlns:android="http://schemas.android.com/apk/res/android" 

    android:id="@[+][package:]id/resource_name"

    android:layout_height=["dimension" | "fill_parent" | "wrap_content"]

    android:layout_width=["dimension" | "fill_parent" | "wrap_content"]

    [ViewGroup-specific attributes] >

    <View

        android:id="@[+][package:]id/resource_name"

        android:layout_height=["dimension" | "fill_parent" | "wrap_content"]

        android:layout_width=["dimension" | "fill_parent" | "wrap_content"]

        [View-specific attributes] >

        <requestFocus/>

    </View>

    <ViewGroup>

        <View/>

    </ViewGroup>

    <include layout="@layout/layout_resource"/>

</ViewGroup>

 

注意:根元素可以是ViewGroupView<merge>但只能有一个根元素且必须包含带android 命名空间的xmlns:android属性,如上例所示。

 

元素:

<ViewGroup>

作为View元素的容器,ViewGroup对象分很多种类,每一类都能用不同的方式指定其子元素的布局。ViewGroup对象的种类包括:LinearLayoutRelativeLayoutFrameLayout

 

并不是所有的ViewGroup派生类都能容纳嵌套的View 有些ViewGroupAdapterView类的实现,因此就只能容纳Adapter类型的子元素。

 

属性:

android:id

资源 ID。为元素指定一个唯一的资源名称,用于应用程序能实现对ViewGroup引用。详见下文android:id的值

android:layout_height

度量或关键字。必填项。高度,用度量值、度量资源 ( dimension resource或关键字"fill_parent" "wrap_content"指定。参阅下文合法值

android:layout_width

度量或关键字。必填项。宽度,用度量值、度量资源 (dimension resource或关键字"fill_parent" "wrap_content"指定。参阅下文合法值

ViewGroup基类支持更多的属性,每种子类的实现也支持很多其他属性。完整的可用属性请参阅各个类相关的参考文档,例如LinearLayout XML attributes

 

<View>

一个独立的UI控件,通常是指一个部件(widget)。View对象的种类包括:TextViewButtonCheckBox

 

属性:

android:id

资源 ID。为元素指定一个唯一的资源名称,用于应用程序能实现对ViewGroup引用。详见下文android:id的值

android:layout_height

度量或关键字。必填项。高度,用度量值、度量资源 ( dimension resource或关键字"fill_parent" "wrap_content"指定。参阅下文合法值

android:layout_width

度量或关键字。必填项。宽度,用度量值、度量资源 ( dimension resource或关键字"fill_parent" "wrap_content"指定。参阅下文合法值

View基类支持更多的属性,每种子类的实现也支持很多其他属性。更多信息请参阅声明Layout。完整的可用属性请参阅各个类相关的参考文档,例如TextView XML 属性

 

<requestFocus>

将屏幕的初始焦点设成其父元素,任何表示View类对象的元素都能包含这个内容为空的元素。但每个文件内只能出现一次本元素。

 

<include>

将另一个布局(layout)文件包含进来。

属性:

layout

Layout资源必填项。引用布局资源。

android:id

资源ID。覆盖包含进来的layout资源中的根view ID

android:layout_height

度量或关键字。覆盖包含进来的layout资源中根view给出的高度。仅在同时给出android:layout_width时才生效。

android:layout_width

度量或关键字。覆盖包含进来的layout资源中根view给出的高度。仅在同时给出android:layout_height时才生效。

只要是被包含的layout资源根元素支持的属性,都能在<include>元素中包含进来,并且会覆盖本资源内根元素已定义的属性。

注意: 如果要覆盖layout的度量(长度和宽度),必须同时覆盖android:layout_height android:layout_width——不能只覆盖长度或只覆盖宽度。如果只覆盖其中一个,则不会生效。(其他布局属性,比如weight,仍然继承自原有的layout。)

包含layout资源的另一种方式是使用ViewStub。这是个轻量级的View,它在实际被填充之前不占用layout空间。在实际被填充时,它再把android:layout属性指定的layout资源文件动态包含进来。使用ViewStub的更多信息请参阅Layout特技: ViewStubs

 

<merge>

layout 的层次结构图里并没画出这个可充当根的元素。当明确知道本layout会被放入某个父View中去时,可以用<merge>作为根元素来包裹其下的子元素。如果希望本layout能被其他layout<include>包含进去,并不再另外生成ViewGroup容器,本元素也特别有用。合并layout的更多信息请参阅Layout特技合并

 

android:id的值

对于ID的值,通常应该用"@+id/name"的语法格式。加号+表示这是个新的资源ID。如果R.java类中不存在此资源的话,aapt工具将在R.java类中生成一个新的resource整数标识。例如:

<TextView android:id="@+id/nameTextbox"/>

名称nameTextbox现在作为资源ID和本元素关联。然后在Java代码里可以用此ID名称来引用这个TextView

findViewById(R.id.nameTextbox) ;

本行代码返回TextView对象。

然而,如果已经定义了一个ID资源(并且没被使用过),就可以去掉android:id里的加号并将此ID赋予View元素

 

android:layout_height  android:layout_width的值

高度和宽度值能用Android支持的度量单位px, dp, sp, pt, in, mm)或者以下关键字来表示:

描述

match_parent

和父元素匹配(充满)。自API Level 8开始加入,以淘汰fill_parent

fill_parent

和父元素匹配(充满)。

wrap_content

仅本元素内容需要的大小。

 

自定义View元素

可以生成自定义的ViewViewGroup元素并且和标准布局元素一样放入layout。还可以在XML元素内定义其所支持的属性。更多内容请参阅创建自定义控件

 

示例:

存放在res/layout/main_activity.xmlXML文件:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<TextView android:id="@+id/text" 

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Hello, I am a TextView" />

<Button android:id="@+id/button" 

android:layout_width="wrap_content" 

android:layout_height="wrap_content"

android:text="Hello, I am a Button" />

</LinearLayout>

 

以下代码在ActivityonCreate()方法中装入layout

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView.(R.layout.main_activity);

}

 

参见

*   Declaring Layout

*  View

*   ViewGroup


转载:http://www.cnblogs.com/over140/archive/2011/10/11/2207643.html 

目录
相关文章
|
6月前
|
Android开发 Swift iOS开发
iOS和安卓作为主流操作系统,开发者需了解两者差异以提高效率并确保优质用户体验。
【10月更文挑战第1天】随着移动互联网的发展,智能手机成为生活必需品,iOS和安卓作为主流操作系统,各有庞大的用户群。开发者需了解两者差异以提高效率并确保优质用户体验。iOS使用Swift或Objective-C开发,强调简洁直观的设计;安卓则采用Java或Kotlin,注重层次与动画。Swift和Kotlin均有现代编程特性。此外,iOS设备更易优化,而安卓需考虑更多兼容性问题。iOS应用仅能通过App Store发布,审核严格;安卓除Google Play外还可通过第三方市场发布,审核较宽松。开发者应根据需求选择合适平台,提供最佳应用体验。
160 3
|
4月前
|
安全 Android开发 iOS开发
深入探索iOS与Android系统架构差异及其对开发者的影响
本文旨在通过对比分析iOS和Android两大移动操作系统的系统架构,探讨它们在设计理念、技术实现及开发者生态方面的差异。不同于常规摘要仅概述内容要点,本摘要将简要触及核心议题,为读者提供对两大平台架构特点的宏观理解,铺垫
|
5月前
|
安全 Java Linux
深入解析Android系统架构及其对开发者的意义####
【10月更文挑战第21天】 本文旨在为读者揭开Android操作系统架构的神秘面纱,探讨其如何塑造现代移动应用开发格局。通过剖析Linux内核、硬件抽象层、运行时环境及应用程序框架等关键组件,揭示Android平台的强大功能与灵活性。文章强调了理解Android架构对于开发者优化应用性能、提升用户体验的重要性,并展望了未来技术趋势下Android的发展方向。 ####
132 0
|
6月前
|
IDE Android开发 iOS开发
探索安卓与iOS系统的技术差异:开发者的视角
本文深入分析了安卓(Android)与苹果iOS两大移动操作系统在技术架构、开发环境、用户体验和市场策略方面的主要差异。通过对比这两种系统的不同特点,旨在为移动应用开发者提供有价值的见解,帮助他们在不同平台上做出更明智的开发决策。
|
7月前
|
前端开发 Java 数据库
💡Android开发者必看!掌握这5大框架,轻松打造爆款应用不是梦!🏆
在Android开发领域,框架犹如指路明灯,助力开发者加速应用开发并提升品质。本文将介绍五大必备框架:Retrofit简化网络请求,Room优化数据库访问,MVVM架构提高代码可维护性,Dagger 2管理依赖注入,Jetpack Compose革新UI开发。掌握这些框架,助你在竞争激烈的市场中脱颖而出,打造爆款应用。
651 3
|
7月前
|
IDE Java Android开发
安卓与iOS开发环境的差异及其对开发者的影响
在数字时代的浪潮中,移动应用成为人们生活的延伸。两大操作系统——安卓与iOS,如同两座技术高峰,各自占据着半壁江山。本文将探索这两个平台的开发环境差异,并讨论这些差异如何塑造开发者的编程习惯与职业选择。我们将从工具和语言、用户界面设计、系统架构、市场定位以及开发社区和资源五个方面进行比较,旨在为开发者提供一份实用的指南,帮助他们在不断变化的技术世界中,找到适合自己的发展路径。
91 3
|
7月前
|
移动开发 开发工具 Android开发
安卓与iOS开发:平台差异及其对开发者的影响
在移动开发的大潮中,安卓和iOS两大阵营各领风骚。本文将探讨这两个平台的关键差异,包括开发环境、编程语言、用户界面设计、应用分发以及商业模式等方面。通过比较分析,我们旨在为开发者提供一个清晰的指导,帮助他们根据项目需求和个人偏好做出明智的平台选择。同时,文章也将分享一些跨平台开发工具的使用经验,以期最大化开发效率和市场覆盖。
145 1
|
7月前
|
监控 算法 数据可视化
深入解析Android应用开发中的高效内存管理策略在移动应用开发领域,Android平台因其开放性和灵活性备受开发者青睐。然而,随之而来的是内存管理的复杂性,这对开发者提出了更高的要求。高效的内存管理不仅能够提升应用的性能,还能有效避免因内存泄漏导致的应用崩溃。本文将探讨Android应用开发中的内存管理问题,并提供一系列实用的优化策略,帮助开发者打造更稳定、更高效的应用。
在Android开发中,内存管理是一个绕不开的话题。良好的内存管理机制不仅可以提高应用的运行效率,还能有效预防内存泄漏和过度消耗,从而延长电池寿命并提升用户体验。本文从Android内存管理的基本原理出发,详细讨论了几种常见的内存管理技巧,包括内存泄漏的检测与修复、内存分配与回收的优化方法,以及如何通过合理的编程习惯减少内存开销。通过对这些内容的阐述,旨在为Android开发者提供一套系统化的内存优化指南,助力开发出更加流畅稳定的应用。
151 0
|
8月前
|
iOS开发 Android开发 MacOS
从零到全能开发者:解锁Uno Platform,一键跨越多平台应用开发的神奇之旅,让你的代码飞遍Windows、iOS、Android、macOS及Web,技术小白也能秒变跨平台大神!
【8月更文挑战第31天】从零开始,踏上使用Uno Platform开发跨平台应用的旅程。只需编写一次代码,即可轻松部署到Windows、iOS、macOS、Android及Web(通过WASM)等多个平台。Uno Platform为.NET生态带来前所未有的灵活性和效率,简化跨平台开发。首先确保安装了Visual Studio或VS Code及.NET SDK,然后选择合适的项目模板创建新项目。项目结构类似传统.NET MAUI或WPF项目,包含核心NuGet包。通过简单的按钮示例,你可以快速上手并构建应用。Uno Platform让你的技术探索之旅充满无限可能。
277 0
|
8月前
|
移动开发 安全 Android开发
安卓与iOS开发环境的差异及其对开发者的影响
【8月更文挑战第23天】移动应用开发领域,安卓和iOS两大平台各占半壁江山。它们在开发环境上的差异不仅影响了开发流程,还深刻地塑造了开发者的工作方式。本文将探讨这些差异,并分析它们如何影响开发者的决策和产品的质量。