美文网首页
View的测量

View的测量

作者: To_Be_Better | 来源:发表于2017-11-02 15:15 被阅读0次

View通过MeasureSpac类来测量大小。MeasureSpec是一个32位的int值,其中高2位为测量的模式,低30位为测量的大小。MeasureSpec.getMode(measureSpec)这个方法获取测量的模式。MeasureSpec.getSize(measureSpec)获取测量的数值。

测量的模式

测量模式分为三种:EXACTLY、AT_MOST、UNSPECIFIED。

EXACTLY:

精确模式,当layout_width或layout_height指定为match_parent或者指定具体数值时使用。

AT_MOST:

最大模式,当layout_width或layout_height指定为wrap_content时使用。控件大小随子空间变化。

UNSPECIFIED:

不指定其大小测量模式,一般在绘制自定义View时使用。


在自定义控件中使用了父类View.Java中的onMeasure方法来测量大小。VIew中使用setMeasuredDimension来设置测量大小。

onMeasure

getDefaultSize中根据不同的模式进行大小设置。如果是EXACTLY模式返回传入的大小。如果是AT_MOST和UNSPECIFIED返回getSuggestedMinimumWidth()或者是getSuggestedMinimumHeight()。

源码如下:

getDefaultSize()

getSuggestedMinimumWidth()和getSuggestedMinimumHeight(),如果VIew没有背景就返回最小值,如果有背景则返回背景大小和VIew大小中的较大值。解释的不好还是看代码比较直观。

getSuggestedMinimumWidth

在使用自定义控件时很多时候要重写onMeasure方法来返回更准确的大小数值。在自定义控件中宽高属性设置为wrap_content,如果不重写onMeasure()方法,系统就会默认填充整个父布局。如果自定义控件继承自TextView等一些基础的控件时,可以不用再重写,因为在这些自定义控件中已经重写了onMeasure方法。

相关文章

  • 安卓自定义view(二) - 测量

    view的测量过程 之所以先讲view的测量过程,是因为ViewGroup测量的时候是先把他的所有子view测量完...

  • Android-View的测量

    Android View的测量 在绘制View之前,要对整个View进行测量,这个过程就在onMeasure()方...

  • Android通过View生成Bitmap

    已测量过的View生成Bitmap 即经过测量、布局、绘制并显示在界面上的View,此类View无需再次进行测量和...

  • Android自定义View笔记

    View的测量: View测量模式有三种:EXACTLY,AT_MOST,UNSPECIFIED。一般测量都在on...

  • 自定义view

    测量,赋值,绘制 测量:父view调用子view的onMeasure()方法,首先看子view是一个view还是v...

  • View测量流程

    View测量流程简介 ViewGroup继承自View,在View的测量方法measure方法中,调用了onMea...

  • android基础-view的测量,布局,绘制

    知识点 view的测量 view的布局 view的绘制 android中的view显示方式主要就是测量出大小→决定...

  • View的测量、布局和绘制过程中父View(当前View)和子V

    View的测量、布局和绘制过程中父View(当前View)和子View的先后顺序 View的测量、布局和绘制过程中...

  • Android view架构

    view测量与绘制 view的测量MeasureSpec:定义:由SpecMode(int)于SpecSize(i...

  • 第八单元

    一、View绘制流程 1、流程 measure:确定View的测量宽高 layout:根据测量的宽高确定View在...

网友评论

      本文标题:View的测量

      本文链接:https://www.haomeiwen.com/subject/juwopxtx.html