转:布局【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=""写在子容器里面,控制自己与父容器的边距
- 线形布局【android.widget.LinearLayout】
- 横排列android:orientation="horizontal"
- 竖排列android:orientation="vertical"
- 帧布局【android.widget.FrameLayout】
- 从屏幕左上角开始,分层次,下面为最上层
- 子View可以使用android:layout_gravity来控制方位,
- 相对布局【android.widget.RelativeLayout】
- 大多数情况都是子View使用属性对位
- android:layout_centerInParent="true"相对父亲垂直水平居中
- android:layout_centerHorizontal="true"相对父亲水平居中
- android:layout_centerVertical="true"相对父亲垂直居中
- android:layout_above="@+id/b1"相对b1上方
- android:layout_below="@+id/b1"相对b1下方
- android:layout_toLeftOf="@+id/b1"相对b1左方
- android:layout_toRightOf="@+id/b1"相对b1右方
- android:layout_alignLeft="@+id/b1"相对b1左方对齐
- android:layout_alignTop="@+id/b1"相对b1上方对齐
- android:layout_alignRight="@+id/b1"相对b1右方对齐
- android:layout_alignBottom="@+id/b1"相对b1下方对齐
- android:layout_alignParentLeft="true"相对父亲左方对齐
- android:layout_alignParentRight="true"相对父亲右方对齐
- android:layout_alignParentTop="true"相对父亲垂上方对齐
- android:layout_alignParentBottom="true"相对父亲下方对齐
- 相对布局最好采取链表的感觉,一个一个的相对下去具有连续性。
- 例如

- b1相对父容器,b2相对b1,b3相对b2,b4相对b3
- 表格布局【android.widget.TableLayout】
- android:collapseColumns="0,1,2"隐藏1,2,3列
- android:shrinkColumns="0,1,2" 收缩1,2,3列
- android:stretchColumns="0,1,2"扩展1,2,3列
- 网格布局【android.widget.GridLayout】
- 父容器属性
- android:rowCount="3"总行数
- android:columnCount="4"总列数
- 子View的属性
- android:layout_gravity="fill"单元格对齐方式以及填充方式
- android:layout_columnSpan="2"列合并2个
- android:layout_rowSpan="2"行合并2个
- android:layout_column="2"指定第二列
- android:layout_row="2"指定第二行
- GridLayout的不提供支持空间(weight)分配的原则,空间分配界定。在一般情况下,可以配置一个GridLayout多余的空间分布在多个行或列之间的不相同的比例。
- Android4.0才支持GridLayout布局,如果需要以前的版本也支持,需要使用android-support-v7扩展包
- 父容器属性
- 绝对布局【android.widget.AbsoluteLayout】
- android:layout_x="198dp"坐标x轴
- android:layout_y="162dp"坐标y轴
转:布局【ViewGroup】的更多相关文章
- 高级UI晋升之布局ViewGroup(四)
更多Android高级架构进阶视频学习请点击:https://space.bilibili.com/474380680本篇文章将从LinearLayout.RelativeLayout.FrameLa ...
- Android 布局 ViewGroup
布局 res/layout 命名规则(全部小写) activity_ fragment_ item_ 基础组件 com.android.widget包下 父类View view:屏幕上一块矩阵区域 能 ...
- Android布局概述
布局 布局定义用户界面的视觉结构,如Activity或应用小部件的 UI.您可以通过两种方式声明布局: 在 XML 中声明 UI 元素.Android 提供了对应于 View 类及其子类的简明 XML ...
- 第三部分:Android 应用程序接口指南---第二节:UI---第一章 用户界面和布局
第1章 用户界面和布局 应用程序的用户界面就是用户能看到并可以与它交互的任何东西.Android提供多种预置的UI组件,如结构化布局对象和允许你为应用程序创建图形用户界面的UI控件.Android也会 ...
- android自定义控件一站式入门
自定义控件 Android系统提供了一系列UI相关的类来帮助我们构造app的界面,以及完成交互的处理. 一般的,所有可以在窗口中被展示的UI对象类型,最终都是继承自View的类,这包括展示最终内容的非 ...
- Android中Fragment的两种创建方式
fragment是Activity中用户界面的一个行为或者是一部分.你可以在一个单独的Activity上把多个Fragment组合成为一个多区域的UI,并且可以在多个Activity中再使用.你可以认 ...
- android view :事件
在view绘制完成后,要想在和view交互一定就要使用事件了,这些事件包括触屏,按键,以及轨迹球,说起轨迹球,在黑莓的手机上常见,现在触屏出来之后基本上就没有这个东西了.这些事件从屏幕上产生出来,会进 ...
- layout优化实践
昨天确定了启动时,inflate耗时太多,当时不知道怎么回事,去Trinea的博客一逛,发现原来是需要进行layout优化,跟着他们的步伐,做了下面的修改. 1.据说在lint前是一款layout工具 ...
- PopuWindow_1
PopupWindow有点类似于Dialog,相同点在于都是弹出窗口,并且都可以对其进行自定义显示,并且里面的监听组件,进行相应的操作, 但它与Dialog又有很大的区别,PopupWindow只是弹 ...
- (转)Android之ListView原理学习与优化总结
转自: http://jishu.zol.com.cn/12893.html 在整理前几篇文章的时候有朋友提出写一下ListView的性能优化方面的东西,这个问题也是小马在面试过程中被别人问到的….. ...
随机推荐
- java 泛型类转型
public class NeedCasting { @SuppressWarnings("unchecked") public void f(String[] args)thro ...
- Linux下创建pycharm的快捷方式
第一步:创建桌面快捷方式文件Pycharm.desktop,并打开 sudo gedit /usr/share/applications/Pycharm.desktop 第二步:在打开的文件Pycha ...
- React切换显示和隐藏
1 {radioChange >= 0 && 2 <div> 3 {radioChange === 0 ? ( 4 <div className={style. ...
- 无缘无故出现npm 解析异常的的问题 解决方案
npm cache clean --force try if false delete package.lock.json try again if false npm set registry ht ...
- Python之tornado框架原理
Python web框架 1.简单概念 tornado socket.逻辑处理 Django flask 逻辑处理 第三方处理模块(包含了socket) jinja2模块 Models 数据库处理 V ...
- JavaSE复习(六)函数式接口
函数式接口 有且仅有一个抽象方法的接口 @FunctionalInterface注解 一旦使用该注解来定义接口,编译器将会强制检查该接口是否确实有且仅有一个抽象方法,否则将会报错.需要注 意的是,即使 ...
- Uva 1590 IP Networks
这道题目是一道关于IP地址的题目,要深入理解这道题需要有一定的网络基础. 这道题目我第一次做的时候虽然也AC了,但代码写的比较复杂,不够精炼.近期刚刚参加了网络方面的培训,在有一定知识的基础上,又重写 ...
- LaTex标准article文件框架解析
新建一个LaTex-Article文件 生成的文件框架代码 % ---------------------------------------------------------------- % A ...
- vs2017切换设计、拆分假死的解决
今天安装了vs2017版把vs2015卸载了,原因就是vs2015运行webform后ajaxpro总是会出现time out现象.太难受了,所以决定体验一下新版本. 安装了vs2017后ajaxpr ...
- Xampp+Openfire+Spark的简单使用
Openfire与Spark的简单实用 1.安装Openfire 百度云 提取码:uu11 2.查找路径 /usr/local/openfire 这时候需要将openfire的文件属性都设置为 可读可 ...