Android APIs
public static class

View.MeasureSpec

extends Object
java.lang.Object
   ↳ android.view.View.MeasureSpec

Class Overview

A MeasureSpec encapsulates the layout requirements passed from parent to child. Each MeasureSpec represents a requirement for either the width or the height. A MeasureSpec is comprised of a size and a mode. There are three possible modes:

UNSPECIFIED
The parent has not imposed any constraint on the child. It can be whatever size it wants.
EXACTLY
The parent has determined an exact size for the child. The child is going to be given those bounds regardless of how big it wants to be.
AT_MOST
The child can be as large as it wants up to the specified size.
MeasureSpecs are implemented as ints to reduce object allocation. This class is provided to pack and unpack the <size, mode> tuple into the int.

Summary

Constants
int AT_MOST Measure specification mode: The child can be as large as it wants up to the specified size.
int EXACTLY Measure specification mode: The parent has determined an exact size for the child.
int UNSPECIFIED Measure specification mode: The parent has not imposed any constraint on the child.
Public Constructors
View.MeasureSpec()
Public Methods
static int getMode(int measureSpec)
Extracts the mode from the supplied measure specification.
static int getSize(int measureSpec)
Extracts the size from the supplied measure specification.
static int makeMeasureSpec(int size, int mode)
Creates a measure specification based on the supplied size and mode.
static String toString(int measureSpec)
Returns a String representation of the specified measure specification.
[Expand]
Inherited Methods
From class java.lang.Object

Constants

public static final int AT_MOST

Added in API level 1

Measure specification mode: The child can be as large as it wants up to the specified size.

Constant Value: -2147483648 (0x80000000)

public static final int EXACTLY

Added in API level 1

Measure specification mode: The parent has determined an exact size for the child. The child is going to be given those bounds regardless of how big it wants to be.

Constant Value: 1073741824 (0x40000000)

public static final int UNSPECIFIED

Added in API level 1

Measure specification mode: The parent has not imposed any constraint on the child. It can be whatever size it wants.

Constant Value: 0 (0x00000000)

Public Constructors

public View.MeasureSpec ()

Added in API level 1

Public Methods

public static int getMode (int measureSpec)

Added in API level 1

Extracts the mode from the supplied measure specification.

Parameters
measureSpec the measure specification to extract the mode from

public static int getSize (int measureSpec)

Added in API level 1

Extracts the size from the supplied measure specification.

Parameters
measureSpec the measure specification to extract the size from
Returns
  • the size in pixels defined in the supplied measure specification

public static int makeMeasureSpec (int size, int mode)

Added in API level 1

Creates a measure specification based on the supplied size and mode. The mode must always be one of the following:

Note: On API level 17 and lower, makeMeasureSpec's implementation was such that the order of arguments did not matter and overflow in either value could impact the resulting MeasureSpec. RelativeLayout was affected by this bug. Apps targeting API levels greater than 17 will get the fixed, more strict behavior.

Parameters
size the size of the measure specification
mode the mode of the measure specification
Returns
  • the measure specification based on size and mode

public static String toString (int measureSpec)

Added in API level 1

Returns a String representation of the specified measure specification.

Parameters
measureSpec the measure specification to convert to a String
Returns
  • a String with the following format: "MeasureSpec: MODE SIZE"