Most visited

Recently visited

CoordinatorLayout

public class CoordinatorLayout
extends ViewGroup implements NestedScrollingParent

java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.support.design.widget.CoordinatorLayout


CoordinatorLayout是一个超级动力 FrameLayout

CoordinatorLayout用于两个主要用例:

  1. As a top-level application decor or chrome layout
  2. As a container for a specific interaction with one or more child views

通过为CoordinatorLayout的子视图指定Behaviors ,您可以在单个父级内提供许多不同的交互,并且这些视图也可以相互交互。 View类可以使用DefaultBehavior注释将其DefaultBehavior CoordinatorLayout的子项时指定默认行为。

行为可以用来实现各种交互和额外的布局修改,从滑动抽屉和面板到可滑动触摸的元素和按钮,这些元素和按钮在移动和动画时都会粘到其他元素上。

协调员anchor孩子可能有anchor 该视图ID必须对应于CoordinatorLayout的任意后代,但它可能不是被锚定的子对象本身或被锚定的子对象的后代。 这可以用来放置相对于其他任意内容窗格的浮动视图。

Summary

Nested classes

class CoordinatorLayout.Behavior<V extends View>

交互行为插件为CoordinatorLayout子视图。

@interface CoordinatorLayout.DefaultBehavior

定义View类的默认CoordinatorLayout.Behavior

class CoordinatorLayout.LayoutParams

描述CoordinatorLayout的孩子所需布局的参数。

class CoordinatorLayout.SavedState

 

Inherited XML attributes

From class android.view.ViewGroup
From class android.view.View

Inherited constants

From class android.view.ViewGroup
From class android.view.View

Inherited fields

From class android.view.View

Public constructors

CoordinatorLayout(Context context)
CoordinatorLayout(Context context, AttributeSet attrs)
CoordinatorLayout(Context context, AttributeSet attrs, int defStyleAttr)

Public methods

void dispatchDependentViewsChanged(View view)

允许呼叫者手动将 onDependentViewChanged(CoordinatorLayout, View, View)分派到视图的相关 CoordinatorLayout.Behavior实例,这些实例取决于所提供的 View

boolean doViewsOverlap(View first, View second)

检查两个视图是否相互重叠。

CoordinatorLayout.LayoutParams generateLayoutParams(AttributeSet attrs)

根据提供的属性集返回一组新的布局参数。

List<View> getDependencies(View child)

返回提供视图依赖的视图列表。

int getNestedScrollAxes()

返回此ViewGroup的嵌套滚动的当前轴。

Drawable getStatusBarBackground()

获取用于绘制状态栏的插入区域的绘图。

boolean isPointInChildBounds(View child, int x, int y)

检查CoordinatorLayout坐标中的给定点是否在给定直接子视图的视图范围内。

void onAttachedToWindow()

这在视图附加到窗口时被调用。

void onDetachedFromWindow()

这是在视图从窗口分离时调用的。

void onDraw(Canvas c)

实施这个来做你的绘画。

boolean onInterceptTouchEvent(MotionEvent ev)

实施此方法来拦截所有触摸屏幕动作事件。

void onLayoutChild(View child, int layoutDirection)

除非有 Behavior的存在,否则 Behavior展示每个单独的儿童视图。

void onMeasureChild(View child, int parentWidthMeasureSpec, int widthUsed, int parentHeightMeasureSpec, int heightUsed)

打电话来测量每个单独的儿童视图,除非 Behavior存在。

boolean onNestedFling(View target, float velocityX, float velocityY, boolean consumed)

从嵌套滚动中请求投掷。

boolean onNestedPreFling(View target, float velocityX, float velocityY)

在目标视图消耗它之前,将其反应为嵌套的拖动。

void onNestedPreScroll(View target, int dx, int dy, int[] consumed)

在目标视图占用滚动的一部分之前,对正在进行的嵌套滚动进行处理。

void onNestedScroll(View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed)

反应到正在进行的嵌套滚动。

void onNestedScrollAccepted(View child, View target, int nestedScrollAxes)

响应成功声明嵌套滚动操作。

boolean onStartNestedScroll(View child, View target, int nestedScrollAxes)

响应启动可嵌套滚动操作的后代视图,并在适当的情况下声明嵌套滚动操作。

void onStopNestedScroll(View target)

反应到嵌套滚动操作结束。

boolean onTouchEvent(MotionEvent ev)

实现此方法来处理触摸屏幕动作事件。

void requestDisallowInterceptTouchEvent(boolean disallowIntercept)

当孩子不希望这个父母及其祖先用 onInterceptTouchEvent(MotionEvent)拦截触摸事件时 onInterceptTouchEvent(MotionEvent)

void setFitsSystemWindows(boolean fitSystemWindows)

设置此视图是否应考虑系统屏幕装饰(如状态栏和插入其内容); 即控制是否执行fitSystemWindows(Rect)的默认实现。

void setOnHierarchyChangeListener(ViewGroup.OnHierarchyChangeListener onHierarchyChangeListener)

当一个孩子被添加到这个视图或从这个视图中删除时注册一个回调被调用。

void setStatusBarBackground(Drawable bg)

设置一个drawable在状态栏的insets区域绘制。

void setStatusBarBackgroundColor(int color)

设置一个drawable在状态栏的insets区域绘制。

void setStatusBarBackgroundResource(int resId)

设置一个drawable在状态栏的insets区域绘制。

void setVisibility(int visibility)

设置此视图的启用状态。

Protected methods

boolean checkLayoutParams(ViewGroup.LayoutParams p)
boolean drawChild(Canvas canvas, View child, long drawingTime)

绘制这个视图组的一个孩子。

void drawableStateChanged()

只要视图的状态发生变化,就会调用此函数,使得它影响所显示的可绘制状态。

CoordinatorLayout.LayoutParams generateDefaultLayoutParams()

返回一组默认布局参数。

CoordinatorLayout.LayoutParams generateLayoutParams(ViewGroup.LayoutParams p)

根据提供的布局参数返回一组安全的布局参数。

int getSuggestedMinimumHeight()

返回视图应该使用的建议最小高度。

int getSuggestedMinimumWidth()

返回视图应该使用的建议最小宽度。

void onLayout(boolean changed, int l, int t, int r, int b)

当这个视图为每个孩子分配一个大小和位置时,从布局调用。

void onMeasure(int widthMeasureSpec, int heightMeasureSpec)

测量视图及其内容以确定测量宽度和测量高度。

void onRestoreInstanceState(Parcelable state)

挂钩允许视图重新应用先前由 onSaveInstanceState()生成的内部状态的表示。

Parcelable onSaveInstanceState()

钩子允许视图生成其内部状态的表示,稍后可用于创建具有相同状态的新实例。

boolean verifyDrawable(Drawable who)

如果你的视图子类正在显示它自己的Drawable对象,它应该覆盖这个函数,并且对于它显示的任何Drawable返回true。

Inherited methods

From class android.view.ViewGroup
From class android.view.View
From class java.lang.Object
From interface android.view.ViewParent
From interface android.view.ViewManager
From interface android.graphics.drawable.Drawable.Callback
From interface android.view.KeyEvent.Callback
From interface android.view.accessibility.AccessibilityEventSource
From interface android.support.v4.view.NestedScrollingParent

Public constructors

CoordinatorLayout

CoordinatorLayout (Context context)

Parameters
context Context

CoordinatorLayout

CoordinatorLayout (Context context, 
                AttributeSet attrs)

Parameters
context Context
attrs AttributeSet

CoordinatorLayout

CoordinatorLayout (Context context, 
                AttributeSet attrs, 
                int defStyleAttr)

Parameters
context Context
attrs AttributeSet
defStyleAttr int

Public methods

dispatchDependentViewsChanged

void dispatchDependentViewsChanged (View view)

允许调用者手动调度 onDependentViewChanged(CoordinatorLayout, View, View)到相关的 CoordinatorLayout.Behavior视图实例,视图取决于提供的 View

您通常不需要调用此方法,因为在视图更改时它将自动完成。

Parameters
view View: the View to find dependents of to dispatch the call.

doViewsOverlap

boolean doViewsOverlap (View first, 
                View second)

检查两个视图是否相互重叠。 视图需要是视图层次结构中此CoordinatorLayout后代。

Parameters
first View: first child view to test
second View: second child view to test
Returns
boolean true if both views are visible and overlap each other

generateLayoutParams

CoordinatorLayout.LayoutParams generateLayoutParams (AttributeSet attrs)

根据提供的属性集返回一组新的布局参数。

Parameters
attrs AttributeSet: the attributes to build the layout parameters from
Returns
CoordinatorLayout.LayoutParams an instance of ViewGroup.LayoutParams or one of its descendants

getDependencies

List<View> getDependencies (View child)

返回提供视图依赖的视图列表。 不要存储此列表,因为它的内容可能无法在调用方之外有效。

Parameters
child View: the view to find dependencies for.
Returns
List<View> the list of views which child depends on.

getNestedScrollAxes

int getNestedScrollAxes ()

返回此ViewGroup的嵌套滚动的当前轴。

返回 SCROLL_AXIS_NONE以外的ViewGroup当前充当层次结构中一个或多个后代视图的嵌套滚动父项。

Returns
int Flags indicating the current axes of nested scrolling

getStatusBarBackground

Drawable getStatusBarBackground ()

获取用于绘制状态栏的插入区域的绘图。

Returns
Drawable The status bar background drawable, or null if none set

isPointInChildBounds

boolean isPointInChildBounds (View child, 
                int x, 
                int y)

检查CoordinatorLayout坐标中的给定点是否在给定直接子视图的视图范围内。

Parameters
child View: child view to test
x int: X coordinate to test, in the CoordinatorLayout's coordinate system
y int: Y coordinate to test, in the CoordinatorLayout's coordinate system
Returns
boolean true if the point is within the child view's bounds, false otherwise

onAttachedToWindow

void onAttachedToWindow ()

这在视图附加到窗口时被调用。 此时它有一个Surface并将开始绘制。 注意这个函数保证在onDraw(android.graphics.Canvas)之前被调用,但是它可以在第一个onDraw之前的任何时候调用 - 包括在onMeasure(int, int)之前或之后。

onDetachedFromWindow

void onDetachedFromWindow ()

这是在视图从窗口分离时调用的。 此时它不再有绘图表面。

onDraw

void onDraw (Canvas c)

实施这个来做你的绘画。

Parameters
c Canvas: the canvas on which the background will be drawn

onInterceptTouchEvent

boolean onInterceptTouchEvent (MotionEvent ev)

实施此方法来拦截所有触摸屏幕动作事件。 这允许您在事件发送给您的孩子时观看事件,并在任何时候掌握当前手势的所有权。

使用这个函数需要注意,因为它与View.onTouchEvent(MotionEvent)有相当复杂的交互,并且使用它需要以正确的方式执行该方法。 活动将按以下顺序收到:

  1. You will receive the down event here.
  2. The down event will be handled either by a child of this view group, or given to your own onTouchEvent() method to handle; this means you should implement onTouchEvent() to return true, so you will continue to see the rest of the gesture (instead of looking for a parent view to handle it). Also, by returning true from onTouchEvent(), you will not receive any following events in onInterceptTouchEvent() and all touch processing must happen in onTouchEvent() like normal.
  3. For as long as you return false from this function, each following event (up to and including the final up) will be delivered first here and then to the target's onTouchEvent().
  4. If you return true from here, you will not receive any following events: the target view will receive the same event but with the action ACTION_CANCEL, and all further events will be delivered to your onTouchEvent() method and no longer appear here.

Parameters
ev MotionEvent: The motion event being dispatched down the hierarchy.
Returns
boolean Return true to steal motion events from the children and have them dispatched to this ViewGroup through onTouchEvent(). The current target will receive an ACTION_CANCEL event, and no further messages will be delivered here.

onLayoutChild

void onLayoutChild (View child, 
                int layoutDirection)

除非有Behavior的存在,否则Behavior每个孩子的视图。 行为可能会选择将子测量委托给此方法。

Parameters
child View: child view to lay out
layoutDirection int: the resolved layout direction for the CoordinatorLayout, such as LAYOUT_DIRECTION_LTR or LAYOUT_DIRECTION_RTL.

onMeasureChild

void onMeasureChild (View child, 
                int parentWidthMeasureSpec, 
                int widthUsed, 
                int parentHeightMeasureSpec, 
                int heightUsed)

打电话来测量每个单独的儿童视图,除非Behavior存在。 行为可能会选择将子测量委托给此方法。

Parameters
child View: the child to measure
parentWidthMeasureSpec int: the width requirements for this view
widthUsed int: extra space that has been used up by the parent horizontally (possibly by other children of the parent)
parentHeightMeasureSpec int: the height requirements for this view
heightUsed int: extra space that has been used up by the parent vertically (possibly by other children of the parent)

onNestedFling

boolean onNestedFling (View target, 
                float velocityX, 
                float velocityY, 
                boolean consumed)

从嵌套滚动中请求投掷。

这种方法表示嵌套滚动的孩子已经检测到适合于一阵子的条件。 通常这意味着触摸滚动以velocity的滚动方向结束,沿着滚动轴线满足或超过minimum fling velocity

如果嵌套的滚动子视图通常会抛出,但它位于其自己的内容的边缘,则可以使用此方法代替该嵌套的滚动父级。 父母可以有选择地消费一下,或者观察孩子的情绪。

Parameters
target View: View that initiated the nested scroll
velocityX float: Horizontal velocity in pixels per second
velocityY float: Vertical velocity in pixels per second
consumed boolean: true if the child consumed the fling, false otherwise
Returns
boolean true if this parent consumed or otherwise reacted to the fling

onNestedPreFling

boolean onNestedPreFling (View target, 
                float velocityX, 
                float velocityY)

在目标视图消耗它之前,将其反应为嵌套的拖动。

这种方法意味着一个嵌套的滚动孩子已经检测到沿着每个轴具有给定速度的飞掷。 通常这意味着触摸滚动以velocity的滚动方向结束,沿着可滚动的轴线满足或超过minimum fling velocity

如果一个嵌套的滚动父级正在将动作作为pre-scroll一部分进行pre-scroll ,则它可能也会使用预先动作来完成相同的动作。 通过从此方法返回true ,父母表示孩子不应该true自己的内部内容。

Parameters
target View: View that initiated the nested scroll
velocityX float: Horizontal velocity in pixels per second
velocityY float: Vertical velocity in pixels per second
Returns
boolean true if this parent consumed the fling ahead of the target view

onNestedPreScroll

void onNestedPreScroll (View target, 
                int dx, 
                int dy, 
                int[] consumed)

在目标视图占用滚动的一部分之前,对正在进行的嵌套滚动进行处理。

当经常使用嵌套滚动时,父视图可能希望有机会在嵌套滚动子代之前使用滚动。 一个例子是一个包含可滚动列表的抽屉。 用户将希望能够在列表本身开始滚动之前将列表完全滚动到视图中。

onNestedPreScroll当嵌套滚动孩子调用被称为dispatchNestedPreScroll(int, int, int[], int[]) 该实现应报告dx,dy所报告的滚动像素是如何在consumed阵列中消耗的。 索引0对应于dx,索引1对应于dy。 该参数永远不会为空。 消耗[0]和消耗[1]的初始值将始终为0。

Parameters
target View: View that initiated the nested scroll
dx int: Horizontal scroll distance in pixels
dy int: Vertical scroll distance in pixels
consumed int: Output. The horizontal and vertical scroll distance consumed by this parent

onNestedScroll

void onNestedScroll (View target, 
                int dxConsumed, 
                int dyConsumed, 
                int dxUnconsumed, 
                int dyUnconsumed)

反应到正在进行的嵌套滚动。

当ViewParent的当前嵌套滚动子视图调度一个嵌套滚动事件时,将调用此方法。 要接收对此方法的调用,ViewParent必须事先返回true以便拨打onStartNestedScroll(View, View, int)

将滚动距离的消耗部分和未消耗部分都报告给ViewParent。 例如,实现可以选择使用消费部分来匹配或追踪多个子元素的滚动位置。 未消耗部分可用于允许连续拖动多个滚动或可拖动元素,诸如在垂直抽屉内滚动列表,其中抽屉在达到内部滚动内容的边缘时开始拖动。

Parameters
target View: The descendent view controlling the nested scroll
dxConsumed int: Horizontal scroll distance in pixels already consumed by target
dyConsumed int: Vertical scroll distance in pixels already consumed by target
dxUnconsumed int: Horizontal scroll distance in pixels not consumed by target
dyUnconsumed int: Vertical scroll distance in pixels not consumed by target

onNestedScrollAccepted

void onNestedScrollAccepted (View child, 
                View target, 
                int nestedScrollAxes)

响应成功声明嵌套滚动操作。

此方法将在onStartNestedScroll返回true后onStartNestedScroll 它为视图及其超类为嵌套滚动执行初始配置提供了机会。 如果存在这种方法的实现,则应始终调用其超类的此方法的实现。

Parameters
child View: Direct child of this ViewParent containing target
target View: View that initiated the nested scroll
nestedScrollAxes int: Flags consisting of SCROLL_AXIS_HORIZONTAL, SCROLL_AXIS_VERTICAL or both

onStartNestedScroll

boolean onStartNestedScroll (View child, 
                View target, 
                int nestedScrollAxes)

响应启动可嵌套滚动操作的后代视图,并在适当的情况下声明嵌套滚动操作。

该方法将被调用以响应调用startNestedScroll(int)的后代视图。 视图层次结构中的每个父代将有机会通过返回true来响应和声明嵌套滚动操作。

ViewParent实现可能会重写此方法,以指示视图何时愿意支持即将开始的嵌套滚动操作。 如果它返回true,则在正在进行滚动操作期间,此ViewParent将成为目标视图的嵌套滚动父级。 当嵌套滚动完成后,此ViewParent将收到对onStopNestedScroll(View)的呼叫。

Parameters
child View: Direct child of this ViewParent containing target
target View: View that initiated the nested scroll
nestedScrollAxes int: Flags consisting of SCROLL_AXIS_HORIZONTAL, SCROLL_AXIS_VERTICAL or both
Returns
boolean true if this ViewParent accepts the nested scroll operation

onStopNestedScroll

void onStopNestedScroll (View target)

反应到嵌套滚动操作结束。

在嵌套滚动操作后执行清理。 此方法将在嵌套滚动停止时调用,例如,当嵌套触摸滚动以ACTION_UPACTION_CANCEL事件结束时。 如果存在这种方法的实现,则应始终调用其超类的此方法的实现。

Parameters
target View: View that initiated the nested scroll

onTouchEvent

boolean onTouchEvent (MotionEvent ev)

实现此方法来处理触摸屏幕动作事件。

如果此方法用于检测点击操作,建议通过执行并调用performClick()来执行操作。 这将确保一致的系统行为,包括:

  • obeying click sound preferences
  • dispatching OnClickListener calls
  • handling ACTION_CLICK when accessibility features are enabled

Parameters
ev MotionEvent: The motion event.
Returns
boolean True if the event was handled, false otherwise.

requestDisallowInterceptTouchEvent

void requestDisallowInterceptTouchEvent (boolean disallowIntercept)

当孩子不希望这个父母及其祖先用 onInterceptTouchEvent(MotionEvent)拦截触摸事件时 onInterceptTouchEvent(MotionEvent)

这位家长应该将此通知传递给其父母。 这位家长必须在接触期间服从这个要求(也就是说,只有在这位家长收到了或取消后才清除标志。

Parameters
disallowIntercept boolean: True if the child does not want the parent to intercept touch events.

setFitsSystemWindows

void setFitsSystemWindows (boolean fitSystemWindows)

设置此视图是否应考虑系统屏幕装饰(如状态栏和插入其内容); 即控制是否执行fitSystemWindows(Rect)的默认实现。 请参阅该方法以获取更多详细信

请注意,如果您提供自己的 fitSystemWindows(Rect)实现,则不需要将此标志设置为true - 您的实现将覆盖检查此标志的默认实现。

Parameters
fitSystemWindows boolean: If true, then the default implementation of fitSystemWindows(Rect) will be executed.

setOnHierarchyChangeListener

void setOnHierarchyChangeListener (ViewGroup.OnHierarchyChangeListener onHierarchyChangeListener)

当一个孩子被添加到这个视图或从这个视图中删除时注册一个回调被调用。

Parameters
onHierarchyChangeListener ViewGroup.OnHierarchyChangeListener: the callback to invoke on hierarchy change

setStatusBarBackground

void setStatusBarBackground (Drawable bg)

设置一个drawable在状态栏的insets区域绘制。 请注意,只有在此DrawerLayout适合SystemWindows时才会激活此功能。

Parameters
bg Drawable: Background drawable to draw behind the status bar

setStatusBarBackgroundColor

void setStatusBarBackgroundColor (int color)

设置一个drawable在状态栏的insets区域绘制。 请注意,只有在此DrawerLayout适合SystemWindows时才会激活此功能。

Parameters
color int: Color to use as a background drawable to draw behind the status bar in 0xAARRGGBB format.

setStatusBarBackgroundResource

void setStatusBarBackgroundResource (int resId)

设置一个drawable在状态栏的insets区域绘制。 请注意,只有在此DrawerLayout适合SystemWindows时才会激活此功能。

Parameters
resId int: Resource id of a background drawable to draw behind the status bar

setVisibility

void setVisibility (int visibility)

设置此视图的启用状态。

Parameters
visibility int: One of VISIBLE, INVISIBLE, or GONE.

Protected methods

checkLayoutParams

boolean checkLayoutParams (ViewGroup.LayoutParams p)

Parameters
p ViewGroup.LayoutParams
Returns
boolean

drawChild

boolean drawChild (Canvas canvas, 
                View child, 
                long drawingTime)

绘制这个视图组的一个孩子。 这个方法负责让画布处于正确的状态。 这包括剪裁,翻译,以便孩子的滚动起点在0,0,并应用任何动画转换。

Parameters
canvas Canvas: The canvas on which to draw the child
child View: Who to draw
drawingTime long: The time at which draw is occurring
Returns
boolean True if an invalidate() was issued

drawableStateChanged

void drawableStateChanged ()

只要视图的状态发生变化,就会调用此函数,使得它影响所显示的可绘制状态。

如果View有一个StateListAnimator,它也将被调用来运行必要的状态改变动画。

重写此功能时,一定要调用超类。

generateDefaultLayoutParams

CoordinatorLayout.LayoutParams generateDefaultLayoutParams ()

返回一组默认布局参数。 当传递给addView(View)的视图没有设置布局参数时,请求这些参数。 如果返回null,则会从addView引发异常。

Returns
CoordinatorLayout.LayoutParams a set of default layout parameters or null

generateLayoutParams

CoordinatorLayout.LayoutParams generateLayoutParams (ViewGroup.LayoutParams p)

根据提供的布局参数返回一组安全的布局参数。 当一个ViewGroup被传递了一个View,其布局参数没有通过checkLayoutParams(android.view.ViewGroup.LayoutParams)的测试时,这个方法被调用。 此方法应该返回一组适合此ViewGroup的布局参数,可能是通过从指定的一组布局参数中复制适当的属性。

Parameters
p ViewGroup.LayoutParams: The layout parameters to convert into a suitable set of layout parameters for this ViewGroup.
Returns
CoordinatorLayout.LayoutParams an instance of ViewGroup.LayoutParams or one of its descendants

getSuggestedMinimumHeight

int getSuggestedMinimumHeight ()

返回视图应该使用的建议最小高度。 这将返回视图的最小高度和背景的最小高度( getMinimumHeight() )的最大值。

onMeasure(int, int)中使用时,调用者仍应确保返回的高度在家长的要求范围内。

Returns
int The suggested minimum height of the view.

getSuggestedMinimumWidth

int getSuggestedMinimumWidth ()

返回视图应该使用的建议最小宽度。 这将返回视图的最小宽度和背景的最小宽度( getMinimumWidth() )的最大值。

onMeasure(int, int)中使用时,调用者仍应确保返回的宽度符合父级的要求。

Returns
int The suggested minimum width of the view.

onLayout

void onLayout (boolean changed, 
                int l, 
                int t, 
                int r, 
                int b)

当这个视图为每个孩子分配一个大小和位置时,从布局调用。 带孩子的派生类应该覆盖这个方法,并调用他们每个孩子的布局。

Parameters
changed boolean: This is a new size or position for this view
l int: Left position, relative to parent
t int: Top position, relative to parent
r int: Right position, relative to parent
b int: Bottom position, relative to parent

onMeasure

void onMeasure (int widthMeasureSpec, 
                int heightMeasureSpec)

测量视图及其内容以确定测量宽度和测量高度。 该方法由measure(int, int)调用, measure(int, int)子类覆盖以提供其内容的准确和有效的度量。

合同:覆盖此方法时,您必须致电setMeasuredDimension(int, int)来存储此视图的测量宽度和高度。 如果不这样做将触发IllegalStateException ,由measure(int, int)引发。 调用超类' onMeasure(int, int)是一种有效的用法。

Measure的基类实现默认为背景大小,除非MeasureSpec允许更大的大小。 子类应该覆盖onMeasure(int, int)以提供更好的内容度量。

如果此方法被覆盖,则子类的责任是确保测量的高度和宽度至少为视图的最小高度和宽度( getSuggestedMinimumHeight()getSuggestedMinimumWidth() )。

Parameters
widthMeasureSpec int: horizontal space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec.
heightMeasureSpec int: vertical space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec.

onRestoreInstanceState

void onRestoreInstanceState (Parcelable state)

吊钩允许视图重新应用先前由onSaveInstanceState()生成的内部状态的表示。 这个函数永远不会被调用为null状态。

Parameters
state Parcelable: The frozen state that had previously been returned by onSaveInstanceState().

onSaveInstanceState

Parcelable onSaveInstanceState ()

钩子允许视图生成其内部状态的表示,稍后可用于创建具有相同状态的新实例。 此状态应仅包含不持久或以后不能重建的信息。 例如,您永远不会将当前位置存储在屏幕上,因为当视图的新实例放置在其视图层次结构中时会再次计算该位置。

您可能在此处存储的某些示例:文本视图中的当前光标位置(但通常不是文本本身,因为它存储在内容提供程序或其他永久性存储中),即当前在列表视图中选择的项目。

Returns
Parcelable Returns a Parcelable object containing the view's current dynamic state, or null if there is nothing interesting to save. The default implementation returns null.

verifyDrawable

boolean verifyDrawable (Drawable who)

如果你的视图子类正在显示它自己的Drawable对象,它应该覆盖这个函数,并且对于它显示的任何Drawable返回true。 这样可以安排这些可绘制的动画。

重写此功能时,一定要调用超类。

Parameters
who Drawable: The Drawable to verify. Return true if it is one you are displaying, else return the result of calling through to the super class.
Returns
boolean boolean If true than the Drawable is being displayed in the view; else false and it is not allowed to animate.

Hooray!