android自学之旅——layout资源文件

本文只是我在看官方帮助文档的翻译和理解,以方便自己日后查看。

什么是layout资源文件?layout一个定义了Activity或者组件的布局的xml文件。

它一般长这样:

<?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>

注意:根节点可以是一个ViewGroup、View或者merge节点,但是只能有一个有一个根节点,并且它必须有xml:android属性来定义命名空间。

节点介绍:

  <ViewGroup>

    它是一个可以放很多view的容器。ViewGroup有很多种,主要包含LinearLayout、RelativeLayout和FrameLayout。

    属性:

    android:id

      它是一个节点唯一标识名,你可以在应用程序中通过该标识名来应用一个ViewGroup。

    android:layout_height

      ViewGroup的高度,值可以是一个尺寸值,也可以是“fill_parent”或者“wrap_content”,它是必须的。

    android:layout_width

      ViewGroup的宽度,值可以是一个尺寸值,也可以是“fill_parent”或者“wrap_content”,它是必须的。

    以上只是一个ViewGroup最基本的属性,不同的ViewGroup还有很多各自属性。

  <view>

    一个UI组件比如:TextView、Button、CheckBox。

    通用的属性同ViewGroup,还有很多属于不同View各自的属性。

  <requestFocus>

    任何一个View节点都可以包含改属性,该属性使其父元素在初始化的时候获取焦点,但是每个layout中只允许一个节点拥有该属性。

  <include>

    该标签可以通过用的方式将其他定义好的layout文件加入到当前layout。

    属性:

    layout:

      layout资源的引用,必须的。

    android:id

      资源ID,重写当前的包含的layout的ID提供给根视图。

    android:layout_height

      重写当前包含的layout的高度提供给根视图,只有同时定义了android:layout_width才有效。

    android:layout_width

      重写当前包含的layout的宽度提供给根视图,只有同时定义了android:layout_height才有效。

    你也可以在include中重写根视图支持的include layout中的其他的属性。

    另一个包含一个layout方式是使用ViewStub。它是一个轻量级的视图不占用任何layout控制直到你明确的inflate它,可以通过android:layout来使用它。

  <merge>

    当前你想使用的ViewGroup已经包含的在layout中,并且你想通过include加入到当前ViewGroup中,可以使用当前元素作为根节点,将include layout中的

    ViewGroup与当前ViewGroup合并。

  Value for android:id

  定义改属性的值一般都是通过“@+id/name”这种形式,“+”表示这个是一个新的ID,如果这个“name”不存在,那么aapt工具将会创建一个新的resource integer在R.java类

  中。例如:

  

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

  这个“nameTextbox”现在就可以作为当前TextView的资源ID使用。你可以通过资源ID以下方式来引用TextView在java代码中:

findViewById(R.id.nameTextbox);

  这段代码将返回TextView的对象。

  Value for android:layout_heigth and android:layout_width

  heigth和width值可以是android支持的尺寸单位的值(px、sp、sp、pt、in、nm)或者是以下内容:

Value Descrption
match_parent 设置控件的尺寸和父级元素一致,API8中添加。
fill_parent 设置当前控件的尺寸与父级元素一致,在API8以上过时。
wrap_content 设置控件尺寸为包含控件中内容(图片或文字)

  实例:

  res/layout/main_activity.xml中的layout布局文件:

<?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>

在Acitivity的onCreate加载该布局:

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
    }
时间: 2024-08-28 09:04:06

android自学之旅——layout资源文件的相关文章

【Android自学之旅】 Android开发环境的搭建

搭建参考教程: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html http://www.cnblogs.com/bjzhanghao/archive/2012/11/14/2769409.html 下载开发工具 Jave SDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html Android

Android Maven打包批量替换资源文件(overlay换皮肤)&amp;AAR打包依赖模块覆盖策略

1.AAR打包覆盖 主module(APK)会将AAR中同名资源覆盖: 策略如下: 资源文件例如图片,layout是采用覆盖方式. values文件例如strings.xml是采用合并方式. 有依赖的模块只能采用aar进行打包,例如ui库等二方库. 建议将所有模块共同的resource资源放到通用module中,并且建立相应的命名机制,防重复. 以后如有业务独立的模块可以打成bundle,bundle可以看成一个独立的apk,拥有独立的资源文件 2. maven支持编译时指定res目录,(和An

Android导入工程,R 资源文件无法生成

在Android中使用开源代码或者自己开发项目的时候,经常会遇到R.java文件丢失的情况,如何重新生成呢?网上一般给出这样的两种方法: 方法 1:右击你的工程(项目)——>Android Tools——>Fix Project Properties 即可.方法 2:右击你的工程(项目)——>Properties——>Android ——> 选择相应的target 然后 点击 apply 即可.但是,我今天在调试一个开源项目的时候,发现这两种方法都不可行.后来发现如果资源文件

(网络数据交互)Android解析Internet的Json资源文件

常用的Internet数据解析格式和工具: 网页显示的json数据如下: {"type":"FeatureCollection","metadata":{"generated":1480079277000,"url":"http://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&starttime=2016-11-24&am

如何在使用eclipse的情况下,清理android项目中的冗余class文件和资源文件以及冗余图片

在我们迭代项目的过程中,经常会启用某些功能,或者修改某些界面的问题,那么问题来了,这样很容易出现大量的冗余.java文件,冗余资源文件,一些冗余的界面文件等.那么问题既然出现了,那么如何去解决呢,这就是今天着重要去解决的问题? first: eclipse有个检查冗余java文件的插件,名叫UCDetector: 下载地址为:http://sourceforge.net/projects/ucdetector/files/latest/download?source=files 官网地址:htt

Android有感(9):10.使用XML文件和Java代码控制UI界面

Android推荐使用XML文件设置UI界面,然后用Java代码控制逻辑部分,这体现了MVC思想. MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑. 我们可以在app\src\main\res\layout目录下定义一个XML文件(R.java文件会自

Android反编译获取资源文件-android学习之旅(69)

有时候你看到一些很好看的布局,会考虑别人怎么实现的,回想参考一下,那么这时候反编译一下是很必要的. 要用到的工具apktool.bat和aapt.exe和apktool.jar(要最新版本) 下载前两个网址是http://apktool.shoujifans.com/ apktool.jar要求是最新版,所以到官网去下载http://ibotpeaches.github.io/Apktool/ 要是嫌麻烦,就去我的网址下载,打包好了. 下载链接http://download.csdn.net/d

【转】Android 开发之旅:深入分析布局文件&amp;又是“Hello World!”

引言 上篇可以说是一个分水岭,它标志着我们从Android应用程序理论进入实践,我们拿起手术刀对默认的“Hello World!”程序进行了3个手术,我们清楚了“Hello world!”是如何实现显示在屏幕上的,而且我们知道不仅可以根据布局文件main.xml来初始化屏幕,还可编程地进行.以后基本我们都会以实践的方式来深入Android开发.我们这次深入分析Android应用程序的布局文件,主要内容如下: 1.用户界面及视图层次 2.Android中布局定义方法 3.编写XML布局文件及加载X

Android 开发之旅:深入分析布局文件&amp;又是“Hello World!”

http://www.cnblogs.com/skynet/archive/2010/05/20/1740277.html 引言 上篇可以说是一个分水岭,它标志着我们从Android应用程序理论进入实践,我们拿起手术刀对默认的“Hello World!”程序进行了3个手术,我们清楚了“Hello world!”是如何实现显示在屏幕上的,而且我们知道不仅可以根据布局文件main.xml来初始化屏幕,还可编程地进行.以后基本我们都会以实践的方式来深入Android开发.我们这次深入分析Android