public static abstract class CoordinatorLayout.Behavior
extends Object
java.lang.Object | |
↳ | android.support.design.widget.CoordinatorLayout.Behavior<V extends android.view.View> |
Known Direct Subclasses |
交互行为插件为 CoordinatorLayout
子视图。
行为实现用户可以在子视图上进行的一个或多个交互。 这些交互可能包括拖动,滑动,闪动或任何其他手势。
Public constructors |
|
---|---|
CoordinatorLayout.Behavior() 用于实例化Behaviors的默认构造函数。 |
|
CoordinatorLayout.Behavior(Context context, AttributeSet attrs) 默认构造函数用于从布局中扩充行为。 |
Public methods |
|
---|---|
boolean |
blocksInteractionBelow(CoordinatorLayout parent, V child) 确定是否应阻止与子女订单中给定子女背后的意见交流。 |
int |
getScrimColor(CoordinatorLayout parent, V child) 提供将在关联的子视图后面绘制的稀松平纹颜色。 |
float |
getScrimOpacity(CoordinatorLayout parent, V child) 确定给定子视图背后的稀松织物的当前不透明度 可以使用网格来指示其下面的其他元素当前不具有交互性或可操作性,从而吸引用户关注并关注网格上方的视图。 |
static Object |
getTag(View child) 使用给定的子视图获取行为特定的标记对象。 |
boolean |
isDirty(CoordinatorLayout parent, V child) 确定给定的子视图是否应该被认为是脏的。 |
boolean |
layoutDependsOn(CoordinatorLayout parent, V child, View dependency) 确定提供的子视图是否具有另一个特定的兄弟视图作为布局依赖关系。 |
WindowInsetsCompat |
onApplyWindowInsets(CoordinatorLayout coordinatorLayout, V child, WindowInsetsCompat insets) 当窗口插件已更改时调用。 |
boolean |
onDependentViewChanged(CoordinatorLayout parent, V child, View dependency) 回应孩子的独立观点的变化 只要依赖视图在标准布局流程之外的大小或位置发生变化,就会调用此方法。 |
void |
onDependentViewRemoved(CoordinatorLayout parent, V child, View dependency) 回应孩子的独立观点被删除。 |
boolean |
onInterceptTouchEvent(CoordinatorLayout parent, V child, MotionEvent ev) 在分派给子视图之前,响应CoordinatorLayout触摸事件。 |
boolean |
onLayoutChild(CoordinatorLayout parent, V child, int layoutDirection) 当父母CoordinatorLayout关于布置给定子视图时调用。 |
boolean |
onMeasureChild(CoordinatorLayout parent, V child, int parentWidthMeasureSpec, int widthUsed, int parentHeightMeasureSpec, int heightUsed) 父母CoordinatorLayout即将测量给定子视图时调用。 |
boolean |
onNestedFling(CoordinatorLayout coordinatorLayout, V child, View target, float velocityX, float velocityY, boolean consumed) 当嵌套滚动的小孩正在开始一个投射或一个将是一个投掷的动作时调用。 |
boolean |
onNestedPreFling(CoordinatorLayout coordinatorLayout, V child, View target, float velocityX, float velocityY) 当嵌套滚动的孩子即将开始投掷时调用。 |
void |
onNestedPreScroll(CoordinatorLayout coordinatorLayout, V child, View target, int dx, int dy, int[] consumed) 在目标已消耗任何滚动距离之前,正在进行嵌套滚动更新时调用。 |
void |
onNestedScroll(CoordinatorLayout coordinatorLayout, V child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) 当正在进行嵌套滚动更新并且目标已滚动或尝试滚动时调用。 |
void |
onNestedScrollAccepted(CoordinatorLayout coordinatorLayout, V child, View directTargetChild, View target, int nestedScrollAxes) 当嵌套滚动已被CoordinatorLayout接受时调用。 |
void |
onRestoreInstanceState(CoordinatorLayout parent, V child, Parcelable state) 挂钩允许行为重新应用其以前由 |
Parcelable |
onSaveInstanceState(CoordinatorLayout parent, V child) Hook允许一个行为生成一个内部状态的表示,以后可以用它来创建一个具有相同状态的新实例。 |
boolean |
onStartNestedScroll(CoordinatorLayout coordinatorLayout, V child, View directTargetChild, View target, int nestedScrollAxes) 当CoordinatorLayout的后代尝试启动嵌套滚动时调用。 |
void |
onStopNestedScroll(CoordinatorLayout coordinatorLayout, V child, View target) 当嵌套滚动结束时调用。 |
boolean |
onTouchEvent(CoordinatorLayout parent, V child, MotionEvent ev) 在行为开始 |
static void |
setTag(View child, Object tag) 将行为特定的标签对象与给定的子视图相关联。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
CoordinatorLayout.Behavior ()
用于实例化Behaviors的默认构造函数。
CoordinatorLayout.Behavior (Context context, AttributeSet attrs)
默认构造函数用于从布局中扩充行为。 行为将有机会解析特别定义的布局参数。 这些参数将出现在子视图标签上。
boolean blocksInteractionBelow (CoordinatorLayout parent, V child)
确定是否应阻止与子女订单中给定子女背后的意见交流。
如果 getScrimOpacity(CoordinatorLayout, android.view.View)
返回> 0.0f,则默认实现返回true。
Parameters | |
---|---|
parent |
CoordinatorLayout : the parent view of the given child |
child |
V : the child view to test |
Returns | |
---|---|
boolean |
true if getScrimOpacity(CoordinatorLayout, android.view.View) would return > 0.0f. |
int getScrimColor (CoordinatorLayout parent, V child)
提供将在关联的子视图后面绘制的稀松平纹颜色。
可以使用网格来指示其下面的其他元素当前不具有交互性或可操作性,从而吸引用户关注并关注网格上方的视图。
默认实现返回 BLACK
。
Parameters | |
---|---|
parent |
CoordinatorLayout : the parent view of the given child |
child |
V : the child view above the scrim |
Returns | |
---|---|
int |
the desired scrim color in 0xAARRGGBB format. The default return value is BLACK . |
float getScrimOpacity (CoordinatorLayout parent, V child)
确定给定子视图背后的稀松织物的当前不透明度
可以使用网格来指示其下面的其他元素当前不具有交互性或可操作性,从而吸引用户关注并关注网格上方的视图。
默认实现返回0.0f。
Parameters | |
---|---|
parent |
CoordinatorLayout : the parent view of the given child |
child |
V : the child view above the scrim |
Returns | |
---|---|
float |
the desired scrim opacity from 0.0f to 1.0f. The default return value is 0.0f. |
Object getTag (View child)
使用给定的子视图获取行为特定的标记对象。 该对象与子视图的LayoutParams一起存储。
Parameters | |
---|---|
child |
View : child view to get tag with |
Returns | |
---|---|
Object |
the previously stored tag object |
boolean isDirty (CoordinatorLayout parent, V child)
确定给定的子视图是否应该被认为是脏的。
如果行为确定的属性(如其他依赖视图)会发生更改,则行为应将子视图报告为脏。 这将提示CoordinatorLayout根据需要重新查询行为确定的属性。
Parameters | |
---|---|
parent |
CoordinatorLayout : the parent view of the given child |
child |
V : the child view to check |
Returns | |
---|---|
boolean |
true if child is dirty |
boolean layoutDependsOn (CoordinatorLayout parent, V child, View dependency)
确定提供的子视图是否具有另一个特定的兄弟视图作为布局依赖关系。
这个方法将被调用至少一次以响应布局请求。 如果它对给定的子对象和依赖性视图对返回true,那么父级CoordinatorLayout将:
onDependentViewChanged(CoordinatorLayout, V, View)
when the dependency view's layout or position changes.Parameters | |
---|---|
parent |
CoordinatorLayout : the parent view of the given child |
child |
V : the child view to test |
dependency |
View : the proposed dependency of child |
Returns | |
---|---|
boolean |
true if child's layout depends on the proposed dependency's layout, false otherwise |
WindowInsetsCompat onApplyWindowInsets (CoordinatorLayout coordinatorLayout, V child, WindowInsetsCompat insets)
当窗口插件已更改时调用。
与CoordinatorLayout的直接子代相关的任何行为都可以选择代表其相关视图处理窗口插入更改。
Parameters | |
---|---|
coordinatorLayout |
CoordinatorLayout : the CoordinatorLayout parent of the view this Behavior is associated with |
child |
V : the child view of the CoordinatorLayout this Behavior is associated with |
insets |
WindowInsetsCompat : the new window insets. |
Returns | |
---|---|
WindowInsetsCompat |
The insets supplied, minus any insets that were consumed |
boolean onDependentViewChanged (CoordinatorLayout parent, V child, View dependency)
回应孩子的独立观点的变化
只要依赖视图在标准布局流程之外的大小或位置发生变化,就会调用此方法。 行为可以使用此方法来适当地更新子视图作为响应。
视图的依赖性由 layoutDependsOn(CoordinatorLayout, android.view.View, android.view.View)
确定,或者如果 child
已将另一个视图设置为锚定,则视图的依赖关系由 layoutDependsOn(CoordinatorLayout, android.view.View, android.view.View)
确定。
请注意,如果行为通过此方法更改了孩子的布局,它也应该能够重建onLayoutChild
的正确位置。 onDependentViewChanged
在正常布局期间不会被调用,因为每个子视图的布局总是以依赖性顺序发生。
如果行为更改了子视图的大小或位置,则它应该返回true。 默认实现返回false。
Parameters | |
---|---|
parent |
CoordinatorLayout : the parent view of the given child |
child |
V : the child view to manipulate |
dependency |
View : the dependent view that changed |
Returns | |
---|---|
boolean |
true if the Behavior changed the child view's size or position, false otherwise |
void onDependentViewRemoved (CoordinatorLayout parent, V child, View dependency)
回应孩子的独立观点被删除。
在从父视图中删除相关视图后调用此方法。 行为可以使用此方法来适当地更新子视图作为响应。
视图的依赖性由 layoutDependsOn(CoordinatorLayout, android.view.View, android.view.View)
确定,或者如果 child
已将其他视图设置为锚点,
Parameters | |
---|---|
parent |
CoordinatorLayout : the parent view of the given child |
child |
V : the child view to manipulate |
dependency |
View : the dependent view that has been removed |
boolean onInterceptTouchEvent (CoordinatorLayout parent, V child, MotionEvent ev)
在分派给子视图之前,响应CoordinatorLayout触摸事件。
行为可以使用它来监控入站触摸事件,直到决定拦截事件流的其余部分以对其关联的子视图执行操作为止。 此方法将返回false直到它检测到正确的拦截条件,然后在发生这些条件后返回true。
一旦行为截获触摸事件,事件流的其余部分将被发送到 onTouchEvent(CoordinatorLayout, V, MotionEvent)
方法。
此方法的默认实现始终返回false。
Parameters | |
---|---|
parent |
CoordinatorLayout : the parent view currently receiving this touch event |
child |
V : the child view associated with this Behavior |
ev |
MotionEvent : the MotionEvent describing the touch event being processed |
Returns | |
---|---|
boolean |
true if this Behavior would like to intercept and take over the event stream. The default always returns false. |
boolean onLayoutChild (CoordinatorLayout parent, V child, int layoutDirection)
当父母CoordinatorLayout关于布置给定子视图时调用。
此方法可用于执行子视图的自定义或修改布局,以取代默认子布局行为。 行为的实现可以通过调用parent.onLayoutChild
委托给标准CoordinatorLayout测量行为。
如果行为实现onDependentViewChanged(CoordinatorLayout, android.view.View, android.view.View)
以响应相关视图更改而更改视图的位置,则还应该以尊重这些相关视图的方式实现onLayoutChild
。 onLayoutChild
依赖关系后,将始终调用onLayoutChild
依赖视图。
Parameters | |
---|---|
parent |
CoordinatorLayout : the parent CoordinatorLayout |
child |
V : child view to lay out |
layoutDirection |
int : the resolved layout direction for the CoordinatorLayout, such as LAYOUT_DIRECTION_LTR or LAYOUT_DIRECTION_RTL . |
Returns | |
---|---|
boolean |
true if the Behavior performed layout of the child view, false to request default layout behavior |
boolean onMeasureChild (CoordinatorLayout parent, V child, int parentWidthMeasureSpec, int widthUsed, int parentHeightMeasureSpec, int heightUsed)
父母CoordinatorLayout即将测量给定子视图时调用。
此方法可用于执行自定义或修改的子视图测量,以代替默认的子测量行为。 行为的实现可以通过调用parent.onMeasureChild
委托给标准CoordinatorLayout测量行为。
Parameters | |
---|---|
parent |
CoordinatorLayout : the parent CoordinatorLayout |
child |
V : 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) |
Returns | |
---|---|
boolean |
true if the Behavior measured the child view, false if the CoordinatorLayout should perform its default measurement |
boolean onNestedFling (CoordinatorLayout coordinatorLayout, V child, View target, float velocityX, float velocityY, boolean consumed)
当嵌套滚动的小孩正在开始一个投射或一个将是一个投掷的动作时调用。
任何与CoordinatorLayout的直接子项关联的行为都可以选择接受嵌套滚动,作为onStartNestedScroll(CoordinatorLayout, V, View, View, int)
一部分。 每个返回true的行为都将接收该嵌套滚动的后续嵌套滚动事件。
onNestedFling
在当前嵌套滚动子视图检测到适合条件的正确条件时调用。 它报告孩子本身是否消费了这一招。 如果没有,该小孩预计会出现某种过度滚动的指示。 如果这个方法消耗了这个方块,那么这个方法应该返回true,这样一个自己没有采取行动的孩子可以选择不显示超出指示。
Parameters | |
---|---|
coordinatorLayout |
CoordinatorLayout : the CoordinatorLayout parent of the view this Behavior is associated with |
child |
V : the child view of the CoordinatorLayout this Behavior is associated with |
target |
View : the descendant view of the CoordinatorLayout performing the nested scroll |
velocityX |
float : horizontal velocity of the attempted fling |
velocityY |
float : vertical velocity of the attempted fling |
consumed |
boolean : true if the nested child view consumed the fling |
Returns | |
---|---|
boolean |
true if the Behavior consumed the fling |
boolean onNestedPreFling (CoordinatorLayout coordinatorLayout, V child, View target, float velocityX, float velocityY)
当嵌套滚动的孩子即将开始投掷时调用。
任何与CoordinatorLayout的直接子项关联的行为都可以选择接受嵌套滚动,作为onStartNestedScroll(CoordinatorLayout, V, View, View, int)
一部分。 每个返回true的行为都将接收该嵌套滚动的后续嵌套滚动事件。
onNestedPreFling
在当前嵌套滚动子视图检测到适合条件的适当条件时调用,但它尚未对其执行操作。 一个行为可以返回true来表明它消耗了一堆。 如果至少有一个行为返回true,则不应该让孩子执行这个行为。
Parameters | |
---|---|
coordinatorLayout |
CoordinatorLayout : the CoordinatorLayout parent of the view this Behavior is associated with |
child |
V : the child view of the CoordinatorLayout this Behavior is associated with |
target |
View : the descendant view of the CoordinatorLayout performing the nested scroll |
velocityX |
float : horizontal velocity of the attempted fling |
velocityY |
float : vertical velocity of the attempted fling |
Returns | |
---|---|
boolean |
true if the Behavior consumed the fling |
void onNestedPreScroll (CoordinatorLayout coordinatorLayout, V child, View target, int dx, int dy, int[] consumed)
在目标已消耗任何滚动距离之前,正在进行嵌套滚动更新时调用。
任何与CoordinatorLayout的直接子项关联的行为都可能选择接受嵌套滚动,作为onStartNestedScroll(CoordinatorLayout, V, View, View, int)
一部分。 每个返回true的行为都将接收该嵌套滚动的后续嵌套滚动事件。
onNestedPreScroll
嵌套滚动更新时,嵌套滚动子onNestedPreScroll
消耗滚动距离之前调用onNestedPreScroll
。 每个响应嵌套滚动的行为都会收到相同的值。 CoordinatorLayout将报告消耗的任何方向上的最大像素数,即任何响应嵌套滚动的行为都被报告为已消耗。
Parameters | |
---|---|
coordinatorLayout |
CoordinatorLayout : the CoordinatorLayout parent of the view this Behavior is associated with |
child |
V : the child view of the CoordinatorLayout this Behavior is associated with |
target |
View : the descendant view of the CoordinatorLayout performing the nested scroll |
dx |
int : the raw horizontal number of pixels that the user attempted to scroll |
dy |
int : the raw vertical number of pixels that the user attempted to scroll |
consumed |
int : out parameter. consumed[0] should be set to the distance of dx that was consumed, consumed[1] should be set to the distance of dy that was consumed |
void onNestedScroll (CoordinatorLayout coordinatorLayout, V child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed)
当正在进行嵌套滚动更新并且目标已滚动或尝试滚动时调用。
任何与CoordinatorLayout的直接子项关联的行为都可以选择接受嵌套滚动,作为onStartNestedScroll(CoordinatorLayout, V, View, View, int)
一部分。 每个返回true的行为都将接收该嵌套滚动的后续嵌套滚动事件。
onNestedScroll
嵌套滚动更新时,调用onNestedScroll
滚动消耗和未消耗的滚动组件都以像素为单位提供。 每个响应嵌套滚动的行为都会收到相同的值。
Parameters | |
---|---|
coordinatorLayout |
CoordinatorLayout : the CoordinatorLayout parent of the view this Behavior is associated with |
child |
V : the child view of the CoordinatorLayout this Behavior is associated with |
target |
View : the descendant view of the CoordinatorLayout performing the nested scroll |
dxConsumed |
int : horizontal pixels consumed by the target's own scrolling operation |
dyConsumed |
int : vertical pixels consumed by the target's own scrolling operation |
dxUnconsumed |
int : horizontal pixels not consumed by the target's own scrolling operation, but requested by the user |
dyUnconsumed |
int : vertical pixels not consumed by the target's own scrolling operation, but requested by the user |
void onNestedScrollAccepted (CoordinatorLayout coordinatorLayout, V child, View directTargetChild, View target, int nestedScrollAxes)
当嵌套滚动已被CoordinatorLayout接受时调用。
与CoordinatorLayout的任何直接子项关联的任何行为都可以选择接受嵌套滚动作为onStartNestedScroll(CoordinatorLayout, V, View, View, int)
一部分。 每个返回true的行为都将接收该嵌套滚动的后续嵌套滚动事件。
Parameters | |
---|---|
coordinatorLayout |
CoordinatorLayout : the CoordinatorLayout parent of the view this Behavior is associated with |
child |
V : the child view of the CoordinatorLayout this Behavior is associated with |
directTargetChild |
View : the child view of the CoordinatorLayout that either is or contains the target of the nested scroll operation |
target |
View : the descendant view of the CoordinatorLayout initiating the nested scroll |
nestedScrollAxes |
int : the axes that this nested scroll applies to. See SCROLL_AXIS_HORIZONTAL , SCROLL_AXIS_VERTICAL |
void onRestoreInstanceState (CoordinatorLayout parent, V child, Parcelable state)
挂钩允许行为重新应用其先前由onSaveInstanceState(CoordinatorLayout, V)
生成的内部状态的表示。 这个函数永远不会被调用为null状态。
Parameters | |
---|---|
parent |
CoordinatorLayout : the parent CoordinatorLayout |
child |
V : child view to restore from |
state |
Parcelable : The frozen state that had previously been returned by onSaveInstanceState(CoordinatorLayout, V) . |
也可以看看:
Parcelable onSaveInstanceState (CoordinatorLayout parent, V child)
Hook允许一个行为生成一个内部状态的表示,以后可以用它来创建一个具有相同状态的新实例。 此状态应仅包含不持久或以后不能重建的信息。
行为状态仅在父级 CoordinatorLayout
和使用此行为的视图设置有效ID时才被保存。
Parameters | |
---|---|
parent |
CoordinatorLayout : the parent CoordinatorLayout |
child |
V : child view to restore from |
Returns | |
---|---|
Parcelable |
Returns a Parcelable object containing the behavior's current dynamic state. |
boolean onStartNestedScroll (CoordinatorLayout coordinatorLayout, V child, View directTargetChild, View target, int nestedScrollAxes)
当CoordinatorLayout的后代尝试启动嵌套滚动时调用。
Any Behavior associated with any direct child of the CoordinatorLayout may respond to this event and return true to indicate that the CoordinatorLayout should act as a nested scrolling parent for this scroll. Only Behaviors that return true from this method will receive subsequent nested scroll events.
Parameters | |
---|---|
coordinatorLayout |
CoordinatorLayout : the CoordinatorLayout parent of the view this Behavior is associated with |
child |
V : the child view of the CoordinatorLayout this Behavior is associated with |
directTargetChild |
View : the child view of the CoordinatorLayout that either is or contains the target of the nested scroll operation |
target |
View : the descendant view of the CoordinatorLayout initiating the nested scroll |
nestedScrollAxes |
int : the axes that this nested scroll applies to. See SCROLL_AXIS_HORIZONTAL , SCROLL_AXIS_VERTICAL |
Returns | |
---|---|
boolean |
true if the Behavior wishes to accept this nested scroll |
void onStopNestedScroll (CoordinatorLayout coordinatorLayout, V child, View target)
当嵌套滚动结束时调用。
与CoordinatorLayout的任何直接子项关联的任何行为都可以选择接受嵌套滚动,作为onStartNestedScroll(CoordinatorLayout, V, View, View, int)
一部分。 每个返回true的行为都将接收该嵌套滚动的后续嵌套滚动事件。
onStopNestedScroll
表示单个嵌套滚动事件序列的结束。 这是清理与嵌套滚动相关的任何状态的好地方。
Parameters | |
---|---|
coordinatorLayout |
CoordinatorLayout : the CoordinatorLayout parent of the view this Behavior is associated with |
child |
V : the child view of the CoordinatorLayout this Behavior is associated with |
target |
View : the descendant view of the CoordinatorLayout that initiated the nested scroll |
也可以看看:
boolean onTouchEvent (CoordinatorLayout parent, V child, MotionEvent ev)
在行为开始 intercepting
后,回应CoordinatorLayout触摸事件。
行为可以拦截触摸事件以帮助CoordinatorLayout操纵其子视图。 例如,行为可能允许用户拖动打开或关闭的UI窗格。 该方法应该执行视图布局状态的实际突变。
Parameters | |
---|---|
parent |
CoordinatorLayout : the parent view currently receiving this touch event |
child |
V : the child view associated with this Behavior |
ev |
MotionEvent : the MotionEvent describing the touch event being processed |
Returns | |
---|---|
boolean |
true if this Behavior handled this touch event and would like to continue receiving events in this stream. The default always returns false. |