转:布局【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的性能优化方面的东西,这个问题也是小马在面试过程中被别人问到的….. ...
随机推荐
- Python 常见的字符串操作
1.strip.lstrip和rstrip 描述: 用于移除字符串左右两边.左边.右边指定的字符(默认为空白符,例如:/n, /r, /t, ' ')或字符序列. 语法: str.strip([cha ...
- 问题 C: Goldbach's Conjecture
题目描述 Goldbach's Conjecture: For any even number n greater than or equal to 4, there exists at least ...
- 数据结构与算法之顺序栈C语言实现
顺序栈是一种特殊的顺序表,主要操作是入栈和出栈.将顺序表加一些特定限制,就成了顺序栈. 注: 1.顺序栈C语言实现: 2.按较简单的方式实现,主要帮助理解,可在此基础上修改,更加完善: 3.提供几个简 ...
- NLP系列-中文分词(基于统计)
上文已经介绍了基于词典的中文分词,现在让我们来看一下基于统计的中文分词. 统计分词: 统计分词的主要思想是把每个词看做是由字组成的,如果相连的字在不同文本中出现的次数越多,就证明这段相连的字很有可能就 ...
- html前端插件 ZenCoding 更名为Emmet
eclipse下的使用方法 http://www.educity.cn/develop/651853.html visualstudio下的使用方式 http://www.johnpapa.net ...
- 算法(1)K-diff Pairs in an Array
写在前面:研究操作系统,习惯了用C,但是在做算法题甚至构建大型系统时,C真的是噩梦.还是用C++比较好,基本算法很成熟,并可基于此实现更复杂的算法.那就边写算法边捡起来好久不用的C++吧! 题目:数组 ...
- 【题解】AHOI2009中国象棋
还记得第一次看见这题的时候好像还是联赛前后的事了,那时感觉这题好强……其实现在看来蛮简单的,分类讨论一下即可.题意非常的简单:每一行,每一列都不能超过两个棋子.考虑我们的dp,如果一行一行转移的话行上 ...
- 【题解】NOI2014购票
实际上是一个不完美算法……cogs上面A不掉(爆栈啦).感谢机房大佬PPY的指点,现在也写出来供大家参考参考,理解起来应该是比较简单的一种. 我们首先get出斜率优化方程: \(dp[v] = dis ...
- [洛谷P4238]【模板】多项式求逆
题目大意:多项式求逆 题解:$ A^{-1}(x) = (2 - B(x) * A(x)) \times B(x) \pmod{x^n} $ ($B(x)$ 为$A(x)$在$x^{\lceil \d ...
- [NOI2017]游戏 2-sat
---题面--- 题解: 首先观察到,如果没有x的话,这就是一个2-sat问题. 建图方式:对于限制d1 c1 d2 c2,其中d1, d2分别代表比赛编号,c1, c2代表出场的赛车. 1,如果d1 ...