视图View

获得LayoutInflater实例:

LayoutInflater layoutInflater=LayoutInflater.from(context);

得到LayoutInflater实例之后,就可以调用他的inflate()方法来加载布局:

layoutInflater.inflate(resourceId,root);

inflate方法一边拿有两个参数,第一个参数就是要加载的布局id,第二个参数是指给该布局的外部再嵌套一层父布局,如果不需要就直接传null。这样就成功创建了一个布局的实例,之后将他添加到指定的位置就可以显示出来。

Android中的任何一个布局、任一个控件都是直接或间接继承自View,如TextView、Button、ImageView、ListView等。

每一个视图的绘制过程都必须经过三个最主要的阶段:onMeasure()、onLayout()和onDraw()

一、onMeasure()

View系统的绘制流程会从ViewRoot的performTraversals()方法中开始,在其内部调用View的measure()方法。measure方法接收两个参数,widthMeasureSpec和heightMeasureSpec,这两个值分别用于确定视图的宽度和高度的规格和大小。

MeasureSpec的值由specMode和specSize共同组成,其中specSize记录的是大小,specMode记录的是规格。specMode一共有三种类型,如下:

1.EXACTLY

表示俯视图喜旺子视图的大小应该是有specSize的值来决定的,系统默认会按照这个规则来设置子视图的大小,开发人员当然可以按照自己的沂源设置成任意大小。

2.AT_MOST

表示姿势图最多只可能是specSize中指定的大小

3.UNSPECIFIED

表示开发人员可以将视图按照自己的意愿设置成任意大小,没有任何限制,这种情况不太会用到

childWidthMeasureSpec=getRootMeasureSpec(desirWindowWidth,lp.width);

childHeigthMeasureSpec=getRootMeasureSpec(desirWindowHeigth,lp.height);

可以看到,这里调用了getRootMeasureSpec()方法去获取widthMeasureSpec和heightMeasureSpec的值,注意方法中传入的参数,其中lp.width和lp.height在创建ViewGroup实例时就被赋值了,他们都等于MATCH_PARENT,然后看下getRootMeasureSpec()方法中的代码:

private int getRootMeasure(int windowSize,int rootDimension){

int measureSpec;

switch(rootDimension){

measureSpec=MeasureSpec.makeMeasureSpec(WindowSize,MeasureSpec.EXACTLY);

break;

}

}

时间: 2024-08-24 19:05:25

视图View的相关文章

Android编程动态创建视图View的方法

在Android开 发中,在Activity中关联视图View是一般使用setContentView方法,该方法一种参数是使用XML资源直接创 建:setContentView (int layoutResID),指定layout中的一个XML的ID即可,这种方法简单.另一个方法是 setContentView(android.view.View),参数是指定一个视图View对象,这种方法可以使用自定义的视图类. 在一些场合中,需要对View进行一些定制处理,比如获取到Canvas进行图像绘制,

使用RazorGenerator对视图View进行单元测试

在ASP.NET MVC里我们可以很方便的对模型Model.控制器Controller进行单元测试,但对于 视图View的测试就没那么容易和直接了.在这里介绍一种方法,使用RazorGenerator对View进行 单元测试. 废话不多说,直接上图.主要方法和步骤如下: 1.创建ASP.NET MVC 项目和相应的测试项目. 2.在Web项目中nuget添加包:RazorGenerator.MsBuild. 3.在测试项目中nuget添加包:RazorGenerator.Testing:添加包

关于Android界面编程与视图(View)组件

UI组件--------------->android.widget.* View组件------------->android.view.* 视图(View)组件 所有UI组件都是建立在视图(View)组件.容器(ViewGroup)组件基础之上的. UI组件继承之View组件 ViewGroup----------->作为其他组件的容器使用. ViewGroup包含View组件即 (UI组件---->继承自View组件. ViewGroup组件---->继承自View组件

linux下DNS服务器视图view及日志系统详解

DNS服务器ACL:在named.conf文件中定义ACL功能如同bash当中定义变量,便于后续引用 ACL格式: acl ACL名称 { IP地址1或子网段1; IP地址2或子网段2; }; 例如:将内网172.17.0.0/16及192.168.1.0/24,127.0.0.0/8写成ACL acl intra { 172.17.0.0/16; 192.168.1/0/24; 127.0.0.0/8; }; 引用ACL: allow-recursion { intra; }; 2.视图vie

Oralce 视图 view

Oracle视图 Oracle的数据库对象分为五种:表,视图,序列,索引和同义词. 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改.视图基于的表称为基表. 视图是存储在数据字典里的一条select语句.通过创建视图可以提取数据的逻辑上的集合或组合. 视图的优点: 1.对数据库的访问,因为视图可以有选择性的选取数据库里的一部分. 2.用户通过简单的查询可以从复杂查询中得到结果. 3.维护数据的独立性,试图可从多个表检索数据. 4.对于相同的数据可产生

MySQL视图view/存储过程和函数的使用

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px ".PingFang SC Semibold"; color: #454545 } p.p3 { margin: 0.0px 0.0px 2.0px 0.0px; font: 14.0px

第二天,导出文件sql,查询,视图view,聚合函数,反模式,字符串处理函数

//把数据库导出到脚本文件mysqldump -uroot -p1234 --databases abc > d:/a/abc.sql CREATE TABLE stud( id INT PRIMARY KEY, NAME VARCHAR(32) NOT NULL, score NUMERIC(4,1));//把所有名字都设成"Mike"了UPDATE stud SET NAME="Mike" //只设置分数>=70的记录的NameUPDATE stud

SQL Server 索引(index) 和 视图(view) 的简单介绍和操作

--索引(index)和视图(view)-- --索引(index)----概述: 数据库中的索引类似于书籍的目录,他以指针形式包含了表中一列或几列组合的新顺序,实现表中数据库的逻辑排序.索引创建在数据表或者视图的字段上,生成索引页,存放于数据库中.--分类:在SQL Server中,根据索引的作用和存储方式的不同,将索引分为聚集索引和非聚集索引两类. 1)聚集索引 :指数据库的物理顺序与被创建索引的字段顺序完全相同.同一个数据表最多只能创建一个聚集索引.默认情况下主键自动被创建为聚集索引.聚集

mysql内部组件架构,索引管理,视图view

--以下内容摘自马哥教育课堂 === 单进程多线程模型 每个用户连接都使用一个线程 mysql使用线程池来管理各个线程 mysql内部组件架构 connection --management service & unities(管理服务单元,如备份恢复,集群,合并,迁移工具,复制工具): connection pool(认证,线程重用,连接限制,内存检查,缓存): --SQL接口(DML,DDL,存储过程,视图,触发器): 分析器parser(查询翻译成二进制指令,访问权限): 优化器optim

Android - 隐藏视图View: "android:visibility"

隐藏视图View: "android:visibility" 本文地址: http://blog.csdn.net/caroline_wendy 视图可以选择隐藏(gone), 可视(visible), 不可视(invisible). 可见(visible): XML文件:android:visibility="visible" Java代码:view.setVisibility(View.VISIBLE); 不可见(invisible): XML文件:androi