安卓开发学习笔记(5):view

来源:互联网 发布:mysql 重启 编辑:程序博客网 时间:2024/06/06 03:13

原文链接

http://blog.csdn.net/guolin_blog/article/details/12921889

首先View必须存在于一个布局中,不然设置属性将失去效果,为什么main_layout没有设置父布局也可以改变属性,是因为setContentView()方法系统其实默认帮我们添加了一个FramgLayout的父布局.


一、LayoutInflater的基本用法

RelativeLayout mainLayout =(RelativeLayout) findViewById(R.id.mainLayout);        LayoutInflater layoutInflater = LayoutInflater.from(this);        View buttonView = layoutInflater.inflate(R.layout.button_layout,null);        mainLayout.addView(buttonView,0);

inflate()还有带三个参数的方法重载:

View buttonView1 =layoutInflater.inflate(int resource,ViewGroup root,boolean attachToRoot);


1. 如果root为null,attachToRoot将失去作用,设置任何值都没有意义。

2. 如果root不为null,attachToRoot设为true,则会给加载的布局文件的指定一个父布局,即root。

3. 如果root不为null,attachToRoot设为false,则会将布局文件最外层的所有layout属性进行设置,当该view被添加到父view当中时,这些layout属性会自动生效。

4. 在不设置attachToRoot参数的情况下,如果root不为null,attachToRoot参数默认为true。




二、视图的绘制:

每一个视图的绘制过程都会经历三个最主要的阶段,即onMeasure()、onLayout()和onDraw().


(1).onMeasure()

measure是测量的意思,那么onMeasure()方法顾名思义就是用于测量视图的大小的.视图大小的控制是由父视图、布局文件、以及视图本身共同完成的,父视图会提供给子视图参考的大小,而开发人员可以在XML文件中指定视图的大小,然后视图本身会对最终的大小进行拍板

(2).onLayout()

用于给视图进行布局的,也就是确定视图的位置

(3).onDraw()

对视图进行绘制


0 0
原创粉丝点击