`
_wyh
  • 浏览: 61209 次
社区版块
存档分类
最新评论

android布局管理器使用方法

阅读更多

       Android应用的视图是由一个一个组件组成的。为了更好的管理界面中的各个组件,Android提供了布局管理器。使用布局管理器,可以使Android应用的界面具有更好的平台无关性。

       一般来说,推荐使用布局管理器来管理组件的分布和大小,而不是直接设置组件的位置和大小,这样可以使组件在不同大小,不同分辨率的手机上呈现相同的效果。

 

1,绝对布局,AbsoluteLayout。

        绝对布局不提供任何布局控制,而是直接通过x,y坐标来控制组件的位置。

        使用绝对布局很难兼顾不同大小,不同分辨率的屏幕,因此,往往不推荐使用绝对布局。

例:在AbsoluteLayout中随便放两个组件

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        android:layout_x="200px"
        android:layout_y="200px"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:layout_x="100px"
        android:layout_y="100px"/>

</AbsoluteLayout>

    
 如图,不同分辨率下,组件距离右边界距离都不相同。

 

2,线性布局,LinearLayout。

       线性布局可以横向排列,也可以纵向排列。它是将组件一个一个挨着排列起来。

属性 说明
android:gravity 设置布局管理器內组件的对齐方式,该属性支持top, bottom, left, right, center_vertical, fill_vertical, center_horizontal, fill_horizontal, center, fill, clip_vertical, clip_horizontal。也可以同时指定多种对齐方式,如:left|center_vertical,代表组件在屏幕左边,而且垂直居中对齐。
android:orientation 设置布局管理器內组件的排列方式。horizontal(水平排列),vertical(垂直排列)。
android:layout_weight 表示元素占据的空间大小的比例

例:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#FDAC12"
        android:layout_weight="3"
        android:orientation="horizontal"
        android:gravity="left|center_vertical">

        <Button
            android:layout_width="100px"
            android:layout_height="100px"
            android:background="#111111"/>

        <Button
            android:layout_width="100px"
            android:layout_height="100px"
            android:background="#333333" />
        <Button
            android:layout_width="100px"
            android:layout_height="100px"
            android:background="#555555" />
        <Button
            android:layout_width="100px"
            android:layout_height="100px"
            android:background="#777777"/>


    </LinearLayout>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="#123456"/>


</LinearLayout>

 结果为:                                

       子组件中, LinearLayout的weight为3,TextView的weight为1,所以,LinearLayout和TextView占屏幕的比例为3:1,又因为该布局管理器的android:orientation为vertical,所以,两个子组件的是垂直排列的。

       子组件LinearLayout中有四个Button,该LinearLayout的gravity为left|center_vertical,所以该LinearLayout的子组件,也就是Button,是从左方+垂直中心 开始布局的。

 

3,相对布局,RelativeLayout。

       相对布局容器内子组件的位置总是相对兄弟组件,父容器来决定的。RelativeLayout是Android五大布局中最常用的一种。

属性 说明
android:gravity 设置该布局容器内部各子组件的对齐方式。
android:ignoreGravity 设置哪个组件不受gravity的影响。

 

       RelativeLayout提供了一个内部类RelativeLayout.LayoutParams,该类提供了大量的XML属性来控制布局管理器中子组件的布局分布。

 

 RelativeLayout.LayoutParams类中设置为true和false的属性。

属性 说明
android:layout_centerHorizontal 是否位于容器的水平居中位置
android:layout_centerVertical 是否位于容器的垂直居中位置
android:layout_centerInParent 是否位于容器的中央位置
android:layout_alignParentBottom 是否与容器底端对齐
android:layout_alignParentLeft 是否与容器左边对齐
android:layout_alignParentRight 是否与容器右边对齐
android:layoutParentTop 是否与容器顶端对齐

          

    RelativeLayout.LayoutParams类中设置为其它组件ID的属性

属性                                  说明
android:layout_toRightOf 该子组件位于给出ID组件的右侧
android:layout_toLeftOf 该子组件位于给出ID组件的左侧
android:layout_above 该子组件位于给出ID组件的上方
android:layout_below 该子组件位于给出ID组件的下方
android:layout_alignTop 该子组件与给出ID组件的上边界对齐
android:layout_alignBottom 该子组件与给出ID组件的下边界对齐
android:layout_alignLeft 该子组件与给出ID组件的左边界对齐
android:layout_alignRight 该子组件与给出ID组件的右边界对齐

 

     例: 梅花布局效果

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">

    <Button
        android:id="@+id/center"
        android:layout_width="100px"
        android:layout_height="100px"
        android:background="#11FFFF"
        android:layout_centerInParent="true"/>
    
    <Button
        android:layout_toLeftOf="@+id/center"
        android:layout_alignBottom="@+id/center"
        android:layout_width="100px"
        android:layout_height="100px"
        android:background="#333FFF"
        />
    
    <Button
        android:layout_width="100px"
        android:layout_height="100px"
        android:layout_toRightOf="@+id/center"
        android:layout_alignTop="@+id/center"
        android:background="#555555"/>
    
    <Button
        android:layout_width="100px"
        android:layout_height="100px" 
        android:layout_above="@+id/center"
        android:layout_alignLeft="@+id/center"
        android:background="#888FFF"/>
    
    <Button
        android:layout_width="100px"
        android:layout_height="100px"
        android:layout_below="@+id/center"
        android:layout_alignRight="@+id/center"
        android:background="#111111"/>
    
    
</RelativeLayout>

    结果为:

 

 

4,表格布局,TableLayout

         表格布局采用行,列的形式来管理组件。布局非常简单,并不需要明确声明包含多少行,多少列,只需要一行一行的添加。

         每次向TableLayout添加一个TableRow,该TableRow就是一个表格行,可以向该TableRow中添加组件。

         如果像TalbeLayout中添加其它组件,将会之间占据一行。

属性                                   说明
android:collapseColumns 设置需要被隐藏的列序列号
android:shrinkColumns 设置允许被收缩的列序列号
android:stretchColumns 设置允许被拉伸的列序列号

 例:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:collapseColumns="0, 2"
    android:layout_width="match_parent" android:layout_height="match_parent">

    <TableRow>
        <Button android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="button1"
            android:background="#ABCDEF"/>

        <Button android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="button2"
            android:background="#098765"/>

        <Button android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="button3"
            android:background="#123456"/>

        <Button android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="button4"
            android:background="#456789"/>

        <Button android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="button6"
            android:background="#857853"/>

    </TableRow>

    <Button android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="独占一行的按钮"
        android:background="#FBCDEA"/>

    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="独占一行的文本"
        android:background="#EADBCA"/>

</TableLayout>
  结果为:
        TableLayout中,我设置了collapseColumns为0, 2,也就是说在该TableLayout中,隐藏了所有的第0列和第2列。所以我在TableRow中设置的5个按钮中,隐藏了0和2,只显示了button1, button3, button4。TableRow后面的Button,TextView,因为除TableRow外,其它组件都占一行,所以效果如图。

 

5,帧布局

        帧布局把所有子组件都放在界面的左上角,后写的子组件会覆盖先前的组件。帧布局没有任何的定位方式。所以,帧布局用的非常少。

例:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">

    <Button
        android:layout_width="300px"
        android:layout_height="300px"
        android:background="#000000"/>

    <Button
        android:layout_width="200px"
        android:layout_height="200px"
        android:background="#555FFF"/>

    <Button
        android:layout_width="100px"
        android:layout_height="100px"
        android:background="#FFF222" />

    <Button
        android:layout_width="50px"
        android:layout_height="50px"
        android:background="#DEACF2"/>

</FrameLayout>

 结果为:


 

 

  • 大小: 15.9 KB
  • 大小: 19.9 KB
  • 大小: 15.2 KB
  • 大小: 15.1 KB
  • 大小: 23.2 KB
  • 大小: 14.7 KB
分享到:
评论

相关推荐

    Android布局管理器

    【Android布局管理器】是Android应用开发中的核心概念,它决定了UI组件在屏幕上的排列方式。在Android中,布局管理器主要有五种类型:线性布局(LinearLayout)、表格布局(TableLayout)、相对布局(RelativeLayout...

    android布局管理器代码

    在Android开发中,布局管理器是构建用户界面(UI)的关键元素。它们负责组织和定位UI组件,确保屏幕上的元素合理、美观地排列。本文将深入探讨Android中的常见布局管理器,尤其是基于XML的布局,以及如何在Activity...

    Android UI组件布局管理器

    本文将详细介绍这六种布局管理器的使用方法和特点。 1. **线性布局(LinearLayout)** 线性布局是最基础的布局,它可以沿着水平或垂直方向排列子视图。你可以通过设置`android:orientation`属性来选择方向。子视图...

    android 中页面布局使用demo

    这个“android 中页面布局使用demo”应该是为了帮助开发者深入理解并实践Android中的各种布局管理器。下面我们将详细探讨Android布局及其在实际应用中的使用。 Android支持多种布局管理器,每种都有其特定的用途: ...

    Android 线性布局使用方法

    在Android开发中,布局管理器是构建用户界面的关键部分,其中线性布局(LinearLayout)是最基础也是最常用的布局之一。线性布局按照垂直或水平方向将子视图(Views)排列,如同一串珠子般依次排开。下面我们将深入...

    android studio之布局管理器之间的互相嵌套.docx

    Android Studio 中的布局管理器是指用于安排 UI 组件的容器,它们可以单独使用,也可以互相嵌套以满足复杂的布局需求。在本文中,我们将探讨 Android Studio 中布局管理器之间的互相嵌套,包括 RelativeLayout、...

    Android学习笔记13:表格布局管理器TableLayout

    在Android开发中,表格布局管理器(TableLayout)是一种常用且强大的组件,它允许开发者创建类似于HTML中的表格的布局。...结合实际项目中的TableLayoutDemo,开发者可以更好地理解和掌握这种布局管理器的使用。

    Android开发——布局管理

    本文将深入探讨Android布局管理的基本概念、常用布局类型以及如何优化布局性能。 首先,Android提供了几种内置的布局类型,以满足不同设计需求: 1. **线性布局(LinearLayout)**:这是最基础的布局,支持水平或...

    android布局_Android布局_android_

    本文将深入探讨Android布局的各种类型及其使用方法,旨在帮助开发者更好地理解和掌握Android应用的UI设计。 首先,我们来了解Android中的基本布局类型: 1. **线性布局(LinearLayout)**:这是最基础的布局,它...

    Android学习笔记16:布局管理器的嵌套

    在Android开发中,布局管理器是构建用户界面的关键组成部分,它们负责组织和定位视图(View)或视图组(ViewGroup)。本篇学习笔记主要探讨的是如何在Android应用中进行布局管理器的嵌套,这是一项提升界面复杂性和...

    Android核心技术与实例详解—Android布局管理器

    ### Android核心技术与实例详解——Android布局管理器 #### 3.1 控件类概述 **3.1.1 View类简介** 在深入了解Android布局管理器之前,首先要掌握的基础概念是`View`类。`View`类是Android系统中所有可视控件的...

    布局管理器的嵌套.rar

    “魔乐120天JAVA+3G实训-签保年薪5万-20万年薪不就业退款.doc”虽然标题主要与Java和3G实训相关,但鉴于其在资源包中的位置,它可能也包含一部分关于Android布局管理器的实践教学内容。可能涉及的是一个为期四个月的...

    android布局管理器

    很好用的 android布局管理 可自动生成代码 涵盖android所有的布局和控件 可大大提高UI布局设计效率

    android v7兼容包RecyclerView的使用(一)——布局管理器

    本篇文章将详细介绍如何使用RecyclerView,特别是其核心部分——布局管理器。 首先,RecyclerView的核心概念是视图复用,这使得在大量数据滚动时性能更优。它通过ViewHolder模式减少了findViewById()调用的次数,...

    Android蜂巢布局管理器.zip

    在Android开发中,为了实现复杂且灵活的布局管理,开发者们常常会利用自定义的...通过研究其源码和使用指南,开发者可以学习到如何自定义布局管理器以满足特定需求,同时也能提升在Android UI设计和动画实现上的能力。

    Android中使用RelativeLayout完成梅花布局的代码清单.pdf

    RelativeLayout是一种常用的布局管理器,它允许控件根据相对位置进行排列,提供了灵活的布局方案。本文主要介绍如何使用RelativeLayout来实现一个特殊的“梅花布局”。梅花布局是一种视觉效果,其中控件按照某种规律...

    布局管理器及事件处理代码

    2. **Android布局管理器**: - Linear Layout:沿着垂直或水平方向线性排列子视图。 - Relative Layout:根据相对位置关系来布局子视图,可以指定一个视图相对于另一个视图的位置。 - Frame Layout:以叠加的方式...

    Android 相对布局实例

    在Android开发中,布局管理器是构建用户界面的关键部分,其中相对布局(RelativeLayout)是一种常见的布局方式。相对布局允许我们根据各个视图之间的相对位置来安排它们,这为设计复杂且灵活的用户界面提供了可能。...

    android 布局管理

    本篇将深入探讨Android布局管理的各个方面,包括基本布局、布局属性、嵌套布局以及性能优化策略。 一、基本布局 Android提供了多种基本布局容器,它们各自具有特定的排列方式: 1. **线性布局(LinearLayout)**...

Global site tag (gtag.js) - Google Analytics