转:布局【ViewGroup】

转: http://www.cnblogs.com/leehyuan/p/3389527.html

像素单位的变化:是用dip,而不是px,主要用于宽高的设置

在Android中支持的描述大小区域的类型有以下几种。

px(pixels)——像素:不同的设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。

dip(device independent pixels)——设备独立像素:这个和设备硬件有关,一般哦我们为了支持WCGA、HVGA和QVGA推荐使用这个,不依赖于像素。等同于dp。

sp(scaled pixels—best for text size)——带比例的像素。

pt(points)——磅:1pt = 1/72英寸

in(inches)——英寸

mm(millimeters)——毫米

字体大小单位的变化:字体大小的单位要使用sp而不是dip或者px


layout_xxxx和xxxx的区别:layout_xxxx相对父亲,xxxx为自己的孩子或者自己


颜色分为:3位【rgb】、6位【更多颜色】、8位【前两位为透明度,后6位为更多颜色】



静态布局,在资源文件夹res/layout内部,使用xml文件描述。

动态布局,使用java语法构建ViewGroup对象。

  • 每个View必须指定宽高,layout_width、layout_height
    • 宽高控制对象为:android.view.ViewGroup.LayoutParams
    • 宽高具备父宽和父高即,父容器有多高宽,自己就有多高宽。值为:fill_parent
      match_parent
      • 高宽具备覆盖原则,上面的会覆盖下面的。
  • 除了高宽还有附加了一个权重layout_weight,单位为小数或者整数
    • 权重layout_weight计算方案为所有相加然后除自己,就是自己的比例
    • 控制对象为:android.view.ViewGroup.LayoutParams
    • 如果按照比例设置方案,那么高或者宽需要调整为wrap_content
    • 例如:三个线布局,1线20%,2线60%,3线20%
    • 一线80dp,二线自动增长,三线80dp


android:id="@+id/b1"定义唯一标识



android:padding=""写在父容器里面,控制子容器边距
android:layout_margin=""写在子容器里面,控制自己与父容器的边距


  1. 线形布局【android.widget.LinearLayout】

    1. 横排列android:orientation="horizontal"
    2. 竖排列android:orientation="vertical"
  2. 帧布局【android.widget.FrameLayout】
    1. 从屏幕左上角开始,分层次,下面为最上层
    2. 子View可以使用android:layout_gravity来控制方位,
  3. 相对布局【android.widget.RelativeLayout】
    1. 大多数情况都是子View使用属性对位
    2. android:layout_centerInParent="true"相对父亲垂直水平居中
    3. android:layout_centerHorizontal="true"相对父亲水平居中
    4. android:layout_centerVertical="true"相对父亲垂直居中
    5. android:layout_above="@+id/b1"相对b1上方
    6. android:layout_below="@+id/b1"相对b1下方
    7. android:layout_toLeftOf="@+id/b1"相对b1左方
    8. android:layout_toRightOf="@+id/b1"相对b1右方
    9. android:layout_alignLeft="@+id/b1"相对b1左方对齐
    10. android:layout_alignTop="@+id/b1"相对b1上方对齐
    11. android:layout_alignRight="@+id/b1"相对b1右方对齐
    12. android:layout_alignBottom="@+id/b1"相对b1下方对齐
    13. android:layout_alignParentLeft="true"相对父亲左方对齐
    14. android:layout_alignParentRight="true"相对父亲右方对齐
    15. android:layout_alignParentTop="true"相对父亲垂上方对齐
    16. android:layout_alignParentBottom="true"相对父亲下方对齐
    17. 相对布局最好采取链表的感觉,一个一个的相对下去具有连续性。
    18. 例如
    19. b1相对父容器,b2相对b1,b3相对b2,b4相对b3
  4. 表格布局【android.widget.TableLayout】
    1. android:collapseColumns="0,1,2"隐藏1,2,3列
    2. android:shrinkColumns="0,1,2" 收缩1,2,3列
    3. android:stretchColumns="0,1,2"扩展1,2,3列
  5. 网格布局【android.widget.GridLayout】
    1. 父容器属性

      1. android:rowCount="3"总行数
      2. android:columnCount="4"总列数
    2. 子View的属性
      1. android:layout_gravity="fill"单元格对齐方式以及填充方式
      2. android:layout_columnSpan="2"列合并2个
      3. android:layout_rowSpan="2"行合并2个
      4. android:layout_column="2"指定第二列
      5. android:layout_row="2"指定第二行
      6. GridLayout的不提供支持空间(weight)分配的原则,空间分配界定。在一般情况下,可以配置一个GridLayout多余的空间分布在多个行或列之间的不相同的比例。
      7. Android4.0才支持GridLayout布局,如果需要以前的版本也支持,需要使用android-support-v7扩展包
  6. 绝对布局【android.widget.AbsoluteLayout】
    1. android:layout_x="198dp"坐标x轴
    2. android:layout_y="162dp"坐标y轴
时间: 2024-07-29 18:45:37

转:布局【ViewGroup】的相关文章

Android:跟手滑动的布局ViewGroup

跟手滑动 很多开发者对布局的跟手滑动不太了解,在此就举一个例子,看一个RelativeLayout的滑动显示 原理 无论是跟手滑动,还是弹入弹出动画,本质上都是修改View或ViewGroup的位置,也即是setX() setY()这两个方法. 跟手滑动 跟手滑动是指,当用户在屏幕上滑动时,某一块布局,随着手指的滑动而滑动.所以,它的实现原理就是在onTouch事件中动态获得手指滑动的距离,然后修改view的位置. 弹入弹出动画 跟手滑动时,有可能用户只滑出来View的一部分就松手了,为了效果更

Layout布局——翻译自developer.android.com

布局 布局定义了可见的ui结构,比如activity的UI或者app组件.你可以通过下面两种方法来生命布局. -         在xml文件中声明ui.Android提供了一套直接的xml词汇,对应view的类和子类.比如说组件和布局. -         在运行时构建布局元素.你的可以通过编程来在运行时创建布局对象,或者改变他们的属性. Android框架允许你使用一种或者集中方法来创建ui.例如你可以用xml声明app的默认的布局,包括在其中显示的元素和他们的属性.接下来你可以同哦过代码来

Android在布局中动态添加view的两种方法

一.说明 添加视图文件的时候有两种方式:1.通过在xml文件定义layout:2.java代码编写 二.前言说明 1.构造xml文件 2.LayoutInflater 提到addview,首先要了解一下LayoutInflater类.这个类最主要的功能就是实现将xml表述的layout转化为View的功能.为了便于理解,我们可以将它与findViewById()作一比较,二者都是实例化某一对象,不同的是findViewById()是找xml布局文件下的具体widget控件实例化,而LayoutI

自定义控件一般步骤

自定义组合控件的过程 1.自定义一个View 一般来说,继承相对布局,或者线性布局  ViewGroup:   2.实现父类的构造方法.一般来说,需要在构造方法里初始化自定义的布局文件:    3.根据一些需要或者需求,定义一些API方法: ----------------------------------   4.根据需要,自定义控件的属性,可以参照TextView属性: 5.自定义命名空间,例如: 使用eclipse需添加如下命名空间     xmlns:自定义名称=http://sche

自定义控件三部曲视图篇(三)——瀑布流容器WaterFallLayout实现

前言:只要在前行,梦想就不再遥远 系列文章: Android自定义控件三部曲文章索引:http://blog.csdn.net/harvic880925/article/details/50995268 前面两节讲解了有关ViewGroup的onMeasure.onLayout的知识,这节我们深入性地探讨一下,如何实现经常见到的瀑布流容器,本节将实现的效果图如下: 从效果图中可以看出这里要完成的几个功能: 1.图片随机添加 2.在添加图片时,总是将新图片插入到当前最短的列中 3.每个Item后,

View的post方法导致的内存泄漏分析

简述: 写这篇文章的缘由是最近项目中查内存泄漏时,发现最终原因是由于异步线程调用View的的post方法导致的. 为何我会使用异步线程调用View的post方法,是因为项目中需要用到很多复杂的自定义布局,需要提前解析进入内存,防止在主线程解析导致卡顿,具体的实现方法是在Application启动的时候,使用异步线程解析这些布局,等需要使用的时候直接从内存中拿来用. 造成内存泄漏的原因,需要先分析View的post方法执行流程,也就是文章前半部分的内容 文章内容: View#post方法作用以及实

Android通知栏版本兼容解决方案

Android通知栏是我们在APP中几乎必须使用到的,自定义通知栏给我们带来很多拓展性,但是我们在使用自定义通知栏时往往会遇到自定义通知栏和系统本身颜色.字体等不兼容的问题,本篇博客就重点讲解如何解决Android自定义通知栏在各Android系统的适配问题. 概述: 众所周知,Android通知有两种,默认通知与自定义通知. 默认通知栏通过调用系统接口就能实现,代码如下: new NotificationCompat.Builder(this) /* 状态栏相关 */ //状态栏显示的icon

Android应用开发之自定义View触摸相关工具类全解

背景 最近有些乱,各种事情,各种交叉.好在还有一点上进心,于是继续将自定义这个系列的核心知识再梳理一下吧.关于自定义控件前面博文说过了,这里不会教你拿来主义,只授之以渔,如果你喜欢拿来主义,不好意思,请绕行,如果你喜欢得渔,那请继续. 前面我们已经叙述过了几篇关于自定义View涉及的东西,大家可以自己回过头去看我之前的博客,譬如事件处理.坐标系.工具类等.下面我们还是继续补充一些常用的自定义控件工具类. [工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请

Android开发学习笔记-自定义组合控件的过程

自定义组合控件的过程 1.自定义一个View 一般来说,继承相对布局,或者线性布局 ViewGroup:2.实现父类的构造方法.一般来说,需要在构造方法里初始化自定义的布局文件:3.根据一些需要或者需求,定义一些API方法: ----------------------------------4.根据需要,自定义控件的属性,可以参照TextView属性: 5.自定义命名空间,例如: xmlns:itheima="http://schemas.android.com/apk/res/<包名&

android showAsDropDown的用法属性介绍

使用PopupWindow可实现弹出窗口效果,,其实和AlertDialog一样,也是一种对话框,两者也经常混用,但是也各有特点.下面就看看使用方法.首先初始化一个PopupWindow,指定窗口大小参数. PopupWindow mPop = new PopupWindow(getLayoutInflater().inflate(R.layout.window, null), LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 也可以分