`
yinter
  • 浏览: 244549 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android XML layout

阅读更多
开发过Android应用的同学们都知道,Android工程-res- layout资源文件夹下存放着控制view布局的xml文件,我们可以通过 getViewById(int i)方法,从XML中构造view及其子类,在这个过程当中,XML文件中的一切layout属性也将被赋予这个view。当然,我们也能够通过代码来为某一个view来设置layout,那是后话。通过对集中layout的分析和比较我发现,Android中AbsoluteLayout与CSS的绝对定位很像,TableLayout与HTML的表格定位很像,而RelativeLayout与CSS的相对定位很像。前两者都已经是老生常谈了,我重点比较一下最后一对,即RelativeLayout与CSS的相对定位(Position:relative)。先看一段XML:
<?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="fill_parent"
    android:orientation="vertical">
    <RadioGroup android:id="@+id/radioGroup"
        android:layout_width="fill_parent" android:layout_height="167px"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical">
        <RadioButton android:id="@+id/Queen"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:text="@string/Queen">
        </RadioButton>
        <RadioButton android:id="@+id/Rook"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:text="@string/Rook">
        </RadioButton>
        <RadioButton android:id="@+id/Knight"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:text="@string/Knight">
        </RadioButton>
        <RadioButton android:id="@+id/Bishop"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:text="@string/Bishop">
        </RadioButton>
    </RadioGroup>
    <Button android:id="@+id/promotion"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:layout_below="@id/radioGroup"
        android:text="@string/promote" />
</RelativeLayout>

上面一段XML,这是我为Android国际象棋游戏中的一个“兵行底线”编写的Custom Dialog(自定义对话框)的XML layout。在这里简单定义了几个控件(来自于android.wedget包)的一些位置和外观。可以看到,根节点RelativeLayout告诉我们这是相对定位的布局,然后从上至下由一个RadioGroup(内含四个RadioButton)以及一个Button。通过最下面的 android:layout_below属性,告诉Button要在radioGroup下面呈现。

这是一个非常简单的属性,在relativeLayout下,还有很多属性,见下表
android:layout_above   Positions the bottom edge of this view above the given anchor view ID.
android:layout_alignBaseline   Positions the baseline of this view on the baseline of the given anchor view ID.
android:layout_alignBottom   Makes the bottom edge of this view match the bottom edge of the given anchor view ID.
android:layout_alignLeft   Makes the left edge of this view match the left edge of the given anchor view ID.
android:layout_alignParentBottom   If true, makes the bottom edge of this view match the bottom edge of the parent.
android:layout_alignParentLeft   If true, makes the left edge of this view match the left edge of the parent.
android:layout_alignParentRight   If true, makes the right edge of this view match the right edge of the parent.
android:layout_alignParentTop   If true, makes the top edge of this view match the top edge of the parent.
android:layout_alignRight   Makes the right edge of this view match the right edge of the given anchor view ID.
android:layout_alignTop   Makes the top edge of this view match the top edge of the given anchor view ID.
android:layout_below   Positions the top edge of this view below the given anchor view ID.
android:layout_centerHorizontal   If true, centers this child horizontally within its parent.
android:layout_centerInParent   If true, centers this child horizontally and vertically within its parent.
android:layout_centerVertical   If true, centers this child vertically within its parent.
android:layout_toLeft   Positions the right edge of this view to the left of the given anchor view ID.
android:layout_toRight   Positions the left edge of this view to the right of the given anchor view ID.

我相信大家的英文水平,这段从API上抄下来的东西我就不翻译了。但是可以看出来,只要设置上面的属性(不一定要全部),我们可以轻松规定一个控件(View)的在相对定位下的显示行为。同时RelativeLayout是从layout上继承下来的,因此layout的很多属性也可以在这里使用,包括:android:layout_height, android:layout_width,
android:layout_marginBottom, android:layout_marginLeft, android:layout_marginRight, android:layout_marginTop。

这不由的让人联想到我们对HTML中元素定位的流行做法——div+float。在CSS中,如果我们要控制一个元素(通常是一个div)的显示,就要用到填充距属性(Padding-top、Padding-right、Padding-bottom、Padding-left)与边框属性(Border-top-width、Border-right-width、Border-bottom-width、Border-left- width、Border-width 、Border-color、Border-style、Border-top、Border-right、Border-bottom、Border- left、Width、Height、Float、Clear)。CSS并没有像Android的layout一样定义了很多对齐,但是通过float和 clear一样可以呈现出漂亮的网页(通过float完全可以实现Android中alignXXX与alignParentXXX的功能)。

同样的,XML的分层结构也和HTML的嵌套<div></div>极为相似,把layout从代码里分离也与CSS外部样式表的思想相同。据说WPF也是运用了外部XML文件来控制UI,看来都受到了启发。

另外,Android的layout与Swing的layout有很好的对应,但是我的J2SE学得很差,等我研究研究之后再进行分析和比较吧。

本文来自wodehuajianrui:http://www.cnblogs.com/wodehuajianrui/archive/2008/07/04/1235623.html
分享到:
评论

相关推荐

    android反编译xml、layout

    `apktool`是一个开源的Android反编译工具,它能够帮助我们解包APK,反编译其中的XML和布局文件(layout),并提供重新打包和签名的功能,以实现对APK的分析和修改。 首先,`apktool`的基本使用流程如下: 1. **...

    AndroidXML布局属性详解

    Android XML 布局属性详解 Android XML 布局属性是 Android 应用程序中最基本也是最重要的一部分。它负责控制屏幕上的各种控件的布局和排列。 Android XML 布局属性可以分为三类:第一类是属性值为 true 或 false ...

    Android 五种Layout 布局

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

    android xml中include标签的使用

    在Android开发中,XML布局是构建用户界面的主要方式。`&lt;include /&gt;`标签是一个非常实用的功能,它允许我们将一个XML布局文件嵌入到另一个布局文件中,实现代码的复用和模块化。这个Demo将详细解释如何使用`...

    androidXML.pdf

    ### Android与XML开发详解 #### 一、引言 在Android开发中,XML(Extensible Markup Language)扮演着至关重要的角色。它不仅被用于定义应用程序的用户界面布局,还广泛应用于资源文件、配置文件以及数据交换等多...

    android XML文件详解

    ### Android XML 文件详解 在Android开发中,XML文件主要用于定义应用程序的用户界面(UI)。本文将详细介绍各种Layout中常用的一些重要属性,并将其分为三类进行阐述:定位与对齐、间距与填充、文本与图像处理。 ...

    Android xml布局文件生成工具

    然而,需要注意的是,DroidDraw已不再维护,对于最新的Android SDK版本可能不完全兼容,现在的开发者更多地转向使用Android Studio内置的布局编辑器,如布局设计器(Layout Designer)和实时布局预览(Live Layout ...

    Android自定义Layout布局

    在Android Studio中,可以创建一个res/layout目录下的XML文件,声明自定义布局类,并在`&lt;layout&gt;`标签中设置属性。 ```xml &lt;com.example.myapp.CustomLayout xmlns:android=...

    Android中在xml中静态添加Fragment

    `android:layout_width`和`android:layout_height`通常设置为0dp,然后通过`android:layout_weight`分配空间。 3. **初始化Fragment**:虽然在XML中已声明了Fragment,但还需要在Activity的`onCreate()`方法中进行...

    Android Layout样式布局

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

    xml andriod layout

    在Android开发中,XML布局是构建用户界面的主要方式。它允许开发者通过文本编辑器来设计和组织应用的视图层次,而不是直接在代码中硬编码。XML布局文件通常存储在项目的`res/layout`目录下,使得UI设计与业务逻辑...

    Android的Layout完全介绍

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

    android layout

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

    Android中使用xml文件定义颜色资源.pdf

    XML文件是Android系统中定义颜色资源的标准方式,它允许开发者集中管理颜色,方便在多个组件和界面中复用。本文将深入探讨如何在XML中定义颜色资源,并讲解如何在Android项目中引用这些颜色。 首先,我们来看如何在...

    Android 方形layout界面

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

    android颜色xml配置

    XML颜色配置是Android系统提供的一种灵活、可维护的颜色资源管理方式,允许开发者在XML文件中定义和使用颜色,而非直接在代码中硬编码。这种方式有助于保持代码的整洁,提高代码的可读性和可复用性,同时也方便进行...

    android layout例子

    首先,Android布局是XML文件,通常位于项目的`res/layout`目录下。这些XML文件定义了视图(View)和视图组(ViewGroup),视图是屏幕上的基本元素,如按钮、文本框等,而视图组则是包含多个视图的容器,如线性布局、...

    Android中用xml配置平移动画的代码清单.pdf

    本篇文章将详细探讨如何在Android中使用XML配置平移动画。 首先,我们需要创建一个Android项目,并在项目的res/anim目录下创建一个XML文件来定义动画。在这个例子中,我们有名为`lefttoright.xml`的文件,其内容...

Global site tag (gtag.js) - Google Analytics