`
jiezzy
  • 浏览: 5388 次
社区版块
存档分类
最新评论

android 自定义控件 MeasureSpec.getMode

阅读更多

MeasureSpec对象包含一个size和一个mode,其中mode可以取以下三个数值之一:

  • UNSPECIFIED,1073741824 [0x40000000],未加规定的,表示没有给子view添加任何规定。
  • EXACTLY,0 [0x0],精确的,表示父view为子view确定精确的尺寸。fill_parent
  • AT_MOST,-2147483648 [0x80000000],子view可以在指定的尺寸内尽量大。wrap_content

设置width或height为fill_parent时,容器在布局时调用子view的measure方法传入的模式是EXACTLY,因为子view会占据剩余容器的空间,所以它大小是确定的。而当设置为wrap_content时,容器传进去的是AT_MOST, 表示子view的大小最多是多少,这样子view会根据这个上限来设置自己的尺寸。当子view的大小设置为精确值时,容器传入的是EXACTLY, 而MeasureSpec的UNSPECIFIED模式目前还没有发现在什么情况下使用。

onLayout(boolean, int, int, int, int)

在view给其孩子设置尺寸和位置时被调用

onMeasure()和onLayout()
1. onMeasure
a. 属于View的方法,用来测量自己和内容的来确定宽度和高度
b. view的measure方法体中会调用onMeasure

2. onLayout
a. 属于ViewGroup的方法,用来为当前ViewGroup的子元素的位置和大小
b. View的layout方法体中会调用onLayout

3.onMeasure在onLayout之前调用
4. 设置background后,会重新调用onMeasure和onLayout

分享到:
评论

相关推荐

    android自定义控件-侧滑菜单

    mode共有三种情况,取值分别为MeasureSpec.UNSPECIFIED, MeasureSpec.EXACTLY, ...MeasureSpec.UNSPECIFIED是未指定尺寸,这种情况不多,一般都是父控件是AdapterView, 通过measure方法传入的模式。

    类似时光网IOS城市列表(ListView)效果.zip

    int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } 搜索功能其实没写进demo里面,从项目里整理出来太麻烦了。...

    Android视图控件架构分析之View、ViewGroup

    在Android中,视图控件大致被分为两类,即ViewGroup和View,ViewGroup控件作为父控件,包含并管理着子View,通过...1.MeasureSpec包含了测量的模式和测量的大小,通过MeasureSpec.getMode()获取测量模式,通过MeasureSp

    仿微信朋友圈图片查看

    import android.content.Context;... int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } }

    Android开发艺术探索.任玉刚(带详细书签).pdf

    本书是一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点。本书从三个方面来组织内容。第一,介绍Android开发者不容易掌握的一些知识点;第二,结合Android源代码和应用层...

    Android OnCreate()中获取控件高度与宽度两种方法详解

    Android OnCreate()中获取控件高度与宽度 试过在OnCreate()中获取控件高度与宽度的童鞋都知道,getWidth()与getHeight()方法返回是0,具体原因 看一下Activity的生命周期 就会明白。 上代码: 方法一: int w...

    Android MeasureSpec的理解和源码的解析

    Android MeasureSpec的理解和源码的解析 MeasureSpec的创建规则: 实例详解: package cc.ww; import android.view.View; import android.view.View.MeasureSpec; import android.view.ViewGroup.LayoutParams; ...

    android 实现FlowLayout 流线布局(自定义ViewGroup)

    #项目目的 1、深化自定义View的概念 2、将MeasureSpec、View的绘制流程、Layoutparams等分散的知识点整合成一...[android 自定义控件(底部icon点击效果)](http://blog.csdn.net/double2hao/article/details/51093896)

    类似时光网IOS城市列表(ListView)效果

    int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } 搜索功能其实没写进demo里面,从项目里整理出来太麻烦了...

    Android酷炫转动菜单

    makeMeasureSpec = MeasureSpec.makeMeasureSpec(childSize, childMode); } child.measure(makeMeasureSpec, makeMeasureSpec); } } @Override protected void onLayout(boolean changed, ...

    Android自定义View

    介绍如何自定义View,并重写onMeasure方法重新测量高度和宽度, 讲解MeasureSpec类的使用方法 详见博文 http://blog.csdn.net/a87b01c14/article/details/50359226

    android异步生成图片的示例代码

    下面来说说在Android上如果异步生成图片,通过xml布局用View排版好图片样式,在子线程生成一张图片,以满足生成用来分享的... int widthSpec = View.MeasureSpec.makeMeasureSpec(view.getLayoutParams().width, Vie

    Android开发之自定义CheckBox

    要实现的效果如下 考虑到关键是动画效果,所以直接继承View。不过CheckBox的超类CompoundButton实现了... * A MeasureSpec encapsulates the layout requirements passed from parent to child. * Each MeasureSp

    ScrollView与ListView合用(正确计算Listview的高度)的问题解决

    代码如下:@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super....

    解析:继承ViewGroup后的子类如何重写onMeasure方法

    1.首先贴上我试验成功的代码 代码如下:protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int measureWidth = MeasureSpec.getSize(widthMeasureSpec); int measureHeigth = MeasureSpec....

    WelcomeVideoPager-仿蚂蜂窝自由行和慕课网视频欢迎页.zip

     setMeasuredDimension(View.MeasureSpec.getSize(widthMeasureSpec), View.MeasureSpec.getSize(heightMeasureSpec));  }  /**  * 播放视频  *  * @param uri 播放地址  */  public void ...

    MeasureSpec三种测量模式详解例子

    MeasureSpec三种测量模式详解例子

    Android开发艺术探索

    《Android开发艺术探索》是一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点。《Android开发艺术探索》从三个方面来组织内容。第一,介绍Android开发者不容易掌握的一些...

Global site tag (gtag.js) - Google Analytics