• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > View的layout机制,Viewlayout机制

View的layout机制,Viewlayout机制

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了layout view,android view.layout,arcgis layout view,view.requestlayout,layout view什么意思等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

View的layout机制,Viewlayout机制


View框架的工作流程为:测量每个View大小(measure)-->把每个View放置到相应的位置(layout)-->绘制每个View(draw)。

源代码分析

   在View的源代码中,提取到了下面一些关于layout过程的信息。

   我们知道,整棵View树的根节点是DecorView,它是一个FrameLayout,所以它是一个ViewGroup,所以整棵View树的测量是从一个ViewGroup对象的layout方法开始的。

View:

1、layout

//分配一个位置信息到一个View上面,每个parent会调用children的layout方法来设置children的位置。最好不要覆写该方法,有children的viewGroup,应该覆写onLayout方法

public void layout(int l, int t, int r, int b) ;

2、onLayout

/** 根据布局规则,计算每一个子View的位置,View类默认是空实现。 所以这里没有源代码*/
protected void onLayout(boolean changed, int left, int top, int right, int bottom);

 

ViewGroup:

ViewGroup中,只需要覆写onLayout方法,来计算出每一个子View的位置,并且把layout流程传递给子View。源代码:
ViewGroup没有实现,具体可以参考LinearLayout和RelativeLayout的onLayout方法。虽然各个具体实现都很复杂,但是基本流程是一样的,可以参考下面的伪代码。

protected void onLayout(boolean changed, int l, int t, int r, int b) {  
    for (遍历子View) {  
        /** 
        根据如下数据计算。 
            1、自己当前布局规则。比如垂直排放或者水平排放。 
            2、子View的测量尺寸。 
            3、子View在所有子View中的位置。比如位置索引,第一个或者第二个等。 
        */  
        计算每一个子View的位置信息;   
          
        child.layout(上面计算出来的位置信息);  
    }         
}  


结论

        一般来说,自定义View,如果该View不包含子View,类似于TextView这种的,是不需要覆写onLayout方法的。而含有子View的,比如LinearLayout这种,就需要根据自己的布局规则,来计算每一个子View的位置。

 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • View的layout机制,Viewlayout机制
  • TabLayout + ViewPager,tablayoutviewpager
  • TabLayout和ViewPager简单实现页卡的滑动,tablayoutviewpager

相关文章

  • 2017-05-26Android中的多线程断点下载,android断点下载
  • 2017-05-26Java字节流在Android中的使用,java字节流android
  • 2017-10-21使用AndroidStudio建立简单的单元测试
  • 2017-05-26技术贴汇总,技术汇总
  • 2017-05-26转载 Android 多线程处理之多线程用法大集合,android大集合
  • 2017-05-26Linux I/O多路复用
  • 2017-05-26Android 大杂烩工程之ListView的开发2以及数据仓库开发模式
  • 2017-05-26Android 5.0(棒棒糖))十大新特性,android新特性
  • 2017-05-224.5.2 Intent之复杂数据的传递
  • 2017-05-26android如何改变editText控件中部分文字的格式,androidedittext

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android入门(一),Android入门(
    • 2.6.1 PopupWindow(悬浮框)的基本使用
    • Android开发技巧——定制仿微信图片裁剪控件
    • Android MotionEvent详解
    • 高并发低基数多字段任意组合查询的优化
    • StringBuffer工具类整理(一),stringbuffer工具类
    • Android Layout XML属性,androidlayout
    • andriod 读取通讯录,andriod通讯录
    • 3.4 TouchListener PK OnTouchEvent + 多点触碰
    • 安卓自定义view(简单折线图),安卓自定义view折线

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有