Most visited

Recently visited

RecyclerView.LayoutManager

public static abstract class RecyclerView.LayoutManager
extends Object

java.lang.Object
   ↳ android.support.v7.widget.RecyclerView.LayoutManager
Known Direct Subclasses
Known Indirect Subclasses


LayoutManager负责测量和定位RecyclerView内的项目视图,并确定何时回收用户不再可见的项目视图的策略。 通过改变LayoutManager一个RecyclerView可用于实现一个标准的垂直滚动列表,一个统一的网格,交错网格,水平滚动收藏等等。 提供一些股票布局经理供一般使用。

If the LayoutManager specifies a default constructor or one with the signature ( Context, AttributeSet, int, int), RecyclerView will instantiate and set the LayoutManager when being inflated. Most used properties can be then obtained from getProperties(Context, AttributeSet, int, int). In case a LayoutManager specifies both constructors, the non-default constructor will take precedence.

Summary

Nested classes

class RecyclerView.LayoutManager.Properties

LayoutManager可能要使用的一些常规属性。

XML attributes

android.support.v7.recyclerview:reverseLayout  
android.support.v7.recyclerview:spanCount  
android.support.v7.recyclerview:stackFromEnd  
android:orientation  

Public constructors

RecyclerView.LayoutManager()

Public methods

void addDisappearingView(View child, int index)

仅在 onLayoutChildren(Recycler, State)期间向已知要脱离的布局添加视图时调用,不是因为它已经是 removed就是因为它实际上不在容器的可见部分中,而是正在布局以便通知RecyclerView如何从视图中将项目动画化。

void addDisappearingView(View child)

仅在 onLayoutChildren(Recycler, State)期间 onLayoutChildren(Recycler, State)以将视图添加到已知会消失的布局,可能是因为它已经是 removed或者因为它实际上不在容器的可见部分中,而是为了通知RecyclerView如何从视图中将项目动画化。

void addView(View child, int index)

如果需要,添加视图到当前连接的RecyclerView。

void addView(View child)

如果需要,添加视图到当前连接的RecyclerView。

void assertInLayoutOrScroll(String message)

检查RecyclerView是否在布局的中间或滚动,如果不是, 抛出 IllegalStateException

void assertNotInLayoutOrScroll(String message)

检查RecyclerView是否位于布局的中间或滚动,如果 ,则抛出 IllegalStateException

void attachView(View child)

重新连接以前的 detached视图。

void attachView(View child, int index)

重新连接之前的 detached视图。

void attachView(View child, int index, RecyclerView.LayoutParams lp)

重新连接以前的 detached视图。

void calculateItemDecorationsForChild(View child, Rect outRect)

计算应用于给定子项的项目装饰插页,并使用插入值更新提供的Rect实例。

boolean canScrollHorizontally()

查询当前是否支持水平滚动。

boolean canScrollVertically()

查询当前是否支持垂直滚动。

boolean checkLayoutParams(RecyclerView.LayoutParams lp)

确定提供的LayoutParams对象的有效性。

static int chooseSize(int spec, int desired, int min)

从给定的规格和参数中选择最接近所需尺寸的尺寸,并符合规格。

int computeHorizontalScrollExtent(RecyclerView.State state)

如果您想支持滚动条,请覆盖此方法。

int computeHorizontalScrollOffset(RecyclerView.State state)

如果您想支持滚动条,请覆盖此方法。

int computeHorizontalScrollRange(RecyclerView.State state)

如果您想支持滚动条,请覆盖此方法。

int computeVerticalScrollExtent(RecyclerView.State state)

如果您想支持滚动条,请覆盖此方法。

int computeVerticalScrollOffset(RecyclerView.State state)

如果您想支持滚动条,请覆盖此方法。

int computeVerticalScrollRange(RecyclerView.State state)

如果您想支持滚动条,请覆盖此方法。

void detachAndScrapAttachedViews(RecyclerView.Recycler recycler)

临时分离并取消所有当前连接的子视图。

void detachAndScrapView(View child, RecyclerView.Recycler recycler)

分离子视图并将其添加到 Recycler's废料堆。

void detachAndScrapViewAt(int index, RecyclerView.Recycler recycler)

分离子视图并将其添加到 Recycler's废料堆。

void detachView(View child)

暂时分离子视图。

void detachViewAt(int index)

暂时分离子视图。

void endAnimation(View view)

结束由 RecyclerView.ItemAnimator创建的视图上的所有动画。

View findContainingItemView(View view)

遍历给定视图的祖先,并返回包含它的项视图,也返回LayoutManager的直接子视图。

View findViewByPosition(int position)

查找代表给定适配器位置的视图。

abstract RecyclerView.LayoutParams generateDefaultLayoutParams()

为RecyclerView的子项创建一个默认的 LayoutParams对象。

RecyclerView.LayoutParams generateLayoutParams(Context c, AttributeSet attrs)

从膨胀的布局资源中创建适合此LayoutManager的LayoutParams对象。

RecyclerView.LayoutParams generateLayoutParams(ViewGroup.LayoutParams lp)

如果可能,创建一个适用于此LayoutManager的LayoutParams对象,从所提供的LayoutParams对象中复制相关值。

int getBaseline()

RecyclerView的文本基线从顶部边界返回偏移量。

int getBottomDecorationHeight(View child)

返回应用于子项底部的项目装饰的总高度。

View getChildAt(int index)

返回给定索引处的子视图

int getChildCount()

返回附加到父RecyclerView的当前子视图数。

static int getChildMeasureSpec(int parentSize, int parentMode, int padding, int childDimension, boolean canScroll)

计算MeasureSpec值以测量一维中的子视图。

static int getChildMeasureSpec(int parentSize, int padding, int childDimension, boolean canScroll)

此方法已弃用。 使用getChildMeasureSpec(int, int, int, int, boolean)

boolean getClipToPadding()

检查RecyclerView是否配置为将子视图剪辑到其填充。

int getColumnCountForAccessibility(RecyclerView.Recycler recycler, RecyclerView.State state)

返回可访问性的列数。

int getDecoratedBottom(View child)

返回其父级中给定子视图的底部边缘,由应用的任何 ItemDecorations

void getDecoratedBoundsWithMargins(View view, Rect outBounds)

返回视图的边界,包括其装饰和边距。

int getDecoratedLeft(View child)

返回其父级中给定子视图的左边缘,由应用的任何 ItemDecorations

int getDecoratedMeasuredHeight(View child)

返回给定孩子的测量身高,加上由 ItemDecorations应用的任何插入物的额外尺寸。

int getDecoratedMeasuredWidth(View child)

返回给定孩子的测量宽度,加上由 ItemDecorations应用的任何插入的额外尺寸。

int getDecoratedRight(View child)

返回其父级中给定子视图的右边缘,由应用的任何 ItemDecorations偏移。

int getDecoratedTop(View child)

返回其父级中给定子视图的上边缘,由应用的任何 ItemDecorations偏移。

View getFocusedChild()

返回包含焦点的项目视图。

int getHeight()

返回父RecyclerView的高度

int getHeightMode()

返回RecyclerView的高度测量规格模式。

int getItemCount()

返回绑定到父RecyclerView的适配器中的项目数。

int getItemViewType(View view)

返回由适配器定义的视图类型。

int getLayoutDirection()

返回此RecyclerView的解析布局方向。

int getLeftDecorationWidth(View child)

返回应用于孩子左侧的项目装饰的总宽度。

int getMinimumHeight()
int getMinimumWidth()
int getPaddingBottom()

返回父RecyclerView的底部填充

int getPaddingEnd()

返回父RecyclerView的结束填充

int getPaddingLeft()

返回父RecyclerView的左侧填充

int getPaddingRight()

返回父级RecyclerView的正确填充

int getPaddingStart()

返回父RecyclerView的开始填充

int getPaddingTop()

返回父级RecyclerView的顶部填充

int getPosition(View view)

返回由给定视图表示的项目的适配器位置。

static RecyclerView.LayoutManager.Properties getProperties(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)

分析xml属性以获取布局管理器使用的最常用属性。

int getRightDecorationWidth(View child)

返回应用于子项右侧的项目装饰的总宽度。

int getRowCountForAccessibility(RecyclerView.Recycler recycler, RecyclerView.State state)

返回可访问性的行数。

int getSelectionModeForAccessibility(RecyclerView.Recycler recycler, RecyclerView.State state)

返回可访问性的选择模式。

int getTopDecorationHeight(View child)

返回应用于子项目顶部的项目装饰的总高度。

void getTransformedBoundingBox(View child, boolean includeDecorInsets, Rect out)

计算视图的边界框,同时考虑其关于RecyclerView的矩阵变化(平移,缩放等)。

int getWidth()

返回父RecyclerView的宽度

int getWidthMode()

返回RecyclerView的宽度测量规格模式。

boolean hasFocus()

如果此LayoutManager绑定的RecyclerView具有或包含焦点,则返回true。

void ignoreView(View view)

标记一个视图,以便它不会被废弃或回收。

boolean isAttachedToWindow()

返回LayoutManager当前是否连接到附加到窗口的RecyclerView。

boolean isAutoMeasureEnabled()

返回LayoutManager是否使用自动测量API。

boolean isFocused()

如果此布局管理器的RecyclerView绑定到焦点,则返回true。

boolean isLayoutHierarchical(RecyclerView.Recycler recycler, RecyclerView.State state)

返回布局是否为层次结构或不用于可访问性。

boolean isMeasurementCacheEnabled()

除了View Framework的测量高速缓存外,RecyclerView还为子项使用自己的附加测量高速缓存,以避免在不必要时重新测量它们。

boolean isSmoothScrolling()
void layoutDecorated(View child, int left, int top, int right, int bottom)

使用包含任何当前的 ItemDecorations坐标在RecyclerView内布置给定的子视图。

void layoutDecoratedWithMargins(View child, int left, int top, int right, int bottom)

使用包含任何当前 ItemDecorations和边距的坐标在RecyclerView内布置给定的子视图。

void measureChild(View child, int widthUsed, int heightUsed)

使用标准测量策略测量子视图,将父RecyclerView的填充和任何添加的项目装饰考虑在内。

void measureChildWithMargins(View child, int widthUsed, int heightUsed)

使用标准测量策略测量子视图,考虑父RecyclelerView的填充,任何添加的项目装饰和子边缘。

void moveView(int fromIndex, int toIndex)

将View从一个位置移动到另一个位置。

void offsetChildrenHorizontal(int dx)

沿水平轴偏移附加到父RecyclerView的所有子视图dx个像素。

void offsetChildrenVertical(int dy)

沿垂直轴偏移由dy像素附加到父级RecyclerView的所有子视图。

void onAdapterChanged(Adapter oldAdapter, Adapter newAdapter)

如果此LayoutManager绑定的RecyclerView具有不同的适配器集,则调用此方法。

boolean onAddFocusables(RecyclerView recyclerView, ArrayList<View> views, int direction, int focusableMode)

被调用来填充RecyclerView中的可聚焦视图。

void onAttachedToWindow(RecyclerView view)

当此LayoutManager同时附加到RecyclerView并且RecyclerView附加到窗口时调用。

void onDetachedFromWindow(RecyclerView view, RecyclerView.Recycler recycler)

当此LayoutManager与其父RecyclelerView分离时,或者其父RecyclerView从其窗口分离时调用。

void onDetachedFromWindow(RecyclerView view)

此方法已弃用。 覆盖onDetachedFromWindow(RecyclerView, Recycler)

View onFocusSearchFailed(View focused, int direction, RecyclerView.Recycler recycler, RecyclerView.State state)

当在给定方向上搜索可聚焦视图时调用RecyclerView的当前内容失败。

void onInitializeAccessibilityEvent(AccessibilityEvent event)
void onInitializeAccessibilityEvent(RecyclerView.Recycler recycler, RecyclerView.State state, AccessibilityEvent event)

由可访问性委托调用以初始化可访问性事件。

void onInitializeAccessibilityNodeInfo(RecyclerView.Recycler recycler, RecyclerView.State state, AccessibilityNodeInfoCompat info)

当关于当前布局的信息应该被填充时,由AccessibilityDelegate调用。

void onInitializeAccessibilityNodeInfoForItem(RecyclerView.Recycler recycler, RecyclerView.State state, View host, AccessibilityNodeInfoCompat info)

当应该填充特定项目的可访问性信息时,由AccessibilityDelegate调用。

View onInterceptFocusSearch(View focused, int direction)

此方法使LayoutManager有机会在使用默认行为 FocusFinder之前拦截初始焦点搜索。

void onItemsAdded(RecyclerView recyclerView, int positionStart, int itemCount)

当项目已添加到适配器时调用。

void onItemsChanged(RecyclerView recyclerView)

notifyDataSetChanged()被触发时调用,而不是提供有关实际更改内容的详细信息。

void onItemsMoved(RecyclerView recyclerView, int from, int to, int itemCount)

在使用适配器移动项目时调用。

void onItemsRemoved(RecyclerView recyclerView, int positionStart, int itemCount)

当从适配器中移除项目时调用。

void onItemsUpdated(RecyclerView recyclerView, int positionStart, int itemCount)

在适配器中更改了项目时调用。

void onItemsUpdated(RecyclerView recyclerView, int positionStart, int itemCount, Object payload)

当适配器和可选有效载荷中的项目已更改时调用。

void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state)

从给定的适配器中布置所有相关的子视图。

void onLayoutCompleted(RecyclerView.State state)

完整布局计算完成后调用。

void onMeasure(RecyclerView.Recycler recycler, RecyclerView.State state, int widthSpec, int heightSpec)

测量附加的RecyclerView。

boolean onRequestChildFocus(RecyclerView parent, View child, View focused)

此方法已弃用。 使用onRequestChildFocus(RecyclerView, State, View, View)

boolean onRequestChildFocus(RecyclerView parent, RecyclerView.State state, View child, View focused)

当RecyclerView的后代视图请求焦点时调用。

void onRestoreInstanceState(Parcelable state)
Parcelable onSaveInstanceState()

当LayoutManager保存其状态时调用。

void onScrollStateChanged(int state)

RecyclerView调用此方法来通知LayoutManager滚动状态已更改。

boolean performAccessibilityAction(RecyclerView.Recycler recycler, RecyclerView.State state, int action, Bundle args)

当RecyclerView请求操作时,由AccessibilityDelegate调用。

boolean performAccessibilityActionForItem(RecyclerView.Recycler recycler, RecyclerView.State state, View view, int action, Bundle args)

当LayoutManager的其中一个子级请求辅助功能操作时,由AccessibilityDelegate调用。

void postOnAnimation(Runnable action)

使Runnable在下一个动画时间步骤上执行。

void removeAllViews()

从当前连接的RecyclerView中删除所有视图。

void removeAndRecycleAllViews(RecyclerView.Recycler recycler)

删除所有视图并使用给定的回收站回收它们。

void removeAndRecycleView(View child, RecyclerView.Recycler recycler)

删除子视图并使用给定的Recycler回收它。

void removeAndRecycleViewAt(int index, RecyclerView.Recycler recycler)

删除子视图并使用给定的Recycler回收它。

boolean removeCallbacks(Runnable action)

从消息队列中删除指定的Runnable。

void removeDetachedView(View child)

完成删除先前暂时为 detached的视图。

void removeView(View child)

如果需要,从当前连接的RecyclerView中移除一个视图。

void removeViewAt(int index)

如果需要,从当前连接的RecyclerView中移除一个视图。

boolean requestChildRectangleOnScreen(RecyclerView parent, View child, Rect rect, boolean immediate)

当RecyclerView的一个孩子想要将一个特定的矩形定位到屏幕上时调用。

void requestLayout()

在底层RecyclerView上调用 RecyclerView#requestLayout

void requestSimpleAnimationsInNextLayout()

一个LayoutManager可以调用这个方法来强制RecyclerView在下一个布局过程中运行简单的动画,即使没有任何触发器这样做。

int scrollHorizontallyBy(int dx, RecyclerView.Recycler recycler, RecyclerView.State state)

以屏幕坐标中的dx像素水平滚动并返回行进的距离。

void scrollToPosition(int position)

滚动到指定的适配器位置。

int scrollVerticallyBy(int dy, RecyclerView.Recycler recycler, RecyclerView.State state)

在屏幕坐标中垂直滚动dy像素并返回行进的距离。

void setAutoMeasureEnabled(boolean enabled)

定义布局是由RecyclerView测量,还是由LayoutManager想要处理布局测量本身。

void setMeasuredDimension(int widthSize, int heightSize)

主机RecyclerView的 Set the measured dimensions

void setMeasuredDimension(Rect childrenBounds, int wSpec, int hSpec)

设置儿童给定边界框的测量尺寸和传递到 onMeasure(int, int)的测量规格。

void setMeasurementCacheEnabled(boolean measurementCacheEnabled)

设置RecyclerView是否应该为孩子使用自己的测量缓存。

void smoothScrollToPosition(RecyclerView recyclerView, RecyclerView.State state, int position)

平滑滚动到指定的适配器位置。

void startSmoothScroll(RecyclerView.SmoothScroller smoothScroller)

使用提供的SmoothScroller开始平滑滚动。

void stopIgnoringView(View view)

视图可以被废弃并再次回收。

boolean supportsPredictiveItemAnimations()

返回此LayoutManager是否支持自动项目动画。

Inherited methods

From class java.lang.Object

XML attributes

android.support.v7.recyclerview:reverseLayout

相关方法:

android.support.v7.recyclerview:spanCount

相关方法:

android.support.v7.recyclerview:stackFromEnd

相关方法:

android:orientation

相关方法:

Public constructors

RecyclerView.LayoutManager

RecyclerView.LayoutManager ()

Public methods

addDisappearingView

void addDisappearingView (View child, 
                int index)

仅在 onLayoutChildren(Recycler, State)期间向已知正在消失的布局添加视图时调用,因为它已经是 removed或者因为它实际上不在容器的可见部分中,而是正在布局以便通知RecyclerView如何从视图中将项目动画化。

在dispatchLayout传递完成后,通过此方法添加的视图将对LayoutManager不可见。 他们不能通过getChildAt(int)检索或不包含在getChildCount()方法中。

Parameters
child View: View to add and then remove with animation.
index int: Index of the view.

addDisappearingView

void addDisappearingView (View child)

仅在 onLayoutChildren(Recycler, State)期间 onLayoutChildren(Recycler, State)以向已知要离开的布局添加视图,或者是因为它已经是 removed或者因为它实际上不在容器的可见部分中,而是为了通知RecyclerView而布局如何从视图中将项目动画化。

在dispatchLayout传递完成后,通过此方法添加的视图将对LayoutManager不可见。 它们不能通过getChildAt(int)检索或不包含在getChildCount()方法中。

Parameters
child View: View to add and then remove with animation.

addView

void addView (View child, 
                int index)

如果需要,添加视图到当前连接的RecyclerView。 LayoutManagers应该使用此方法添加从RecyclerView.Recycler使用getViewForPosition(int)获取的getViewForPosition(int)

Parameters
child View: View to add
index int: Index to add child at

addView

void addView (View child)

如果需要,添加视图到当前连接的RecyclerView。 LayoutManagers应使用此方法添加从RecyclerView.Recycler使用getViewForPosition(int)获取的getViewForPosition(int)

Parameters
child View: View to add

assertInLayoutOrScroll

void assertInLayoutOrScroll (String message)

检查RecyclerView是否位于布局的中间或滚动,如果不是, 抛出 IllegalStateException

Parameters
message String: The message for the exception. Can be null.

也可以看看:

assertNotInLayoutOrScroll

void assertNotInLayoutOrScroll (String message)

检查RecyclerView是否在布局的中间或滚动,如果 ,则抛出 IllegalStateException

Parameters
message String: The message for the exception. Can be null.

也可以看看:

attachView

void attachView (View child)

重新连接之前的detached视图。 不应该使用此方法重新附加以前detachAndScrapView(android.view.View, RecyclerView.Recycler)报废的视图}。

Parameters
child View: Child to reattach

attachView

void attachView (View child, 
                int index)

重新连接之前的detached视图。 不应该使用此方法重新附加以前detachAndScrapView(android.view.View, RecyclerView.Recycler)报废的视图}。

Parameters
child View: Child to reattach
index int: Intended child index for child

attachView

void attachView (View child, 
                int index, 
                RecyclerView.LayoutParams lp)

重新连接之前的detached视图。 不应该使用此方法重新附加以前detachAndScrapView(android.view.View, RecyclerView.Recycler)报废的视图}。

Parameters
child View: Child to reattach
index int: Intended child index for child
lp RecyclerView.LayoutParams: LayoutParams for child

calculateItemDecorationsForChild

void calculateItemDecorationsForChild (View child, 
                Rect outRect)

计算应用于给定子项的项目装饰插页,并使用插入值更新提供的Rect实例。

  • The Rect's left is set to the total width of left decorations.
  • The Rect's top is set to the total height of top decorations.
  • The Rect's right is set to the total width of right decorations.
  • The Rect's bottom is set to total height of bottom decorations.

请注意,当调用LayoutManager的度量子方法之一时,会自动计算项目装饰。 如果您需要通过measure(int, int)来测量具有自定义规格的儿童,则可以使用此方法获得装饰。

Parameters
child View: The child view whose decorations should be calculated
outRect Rect: The Rect to hold result values

canScrollHorizontally

boolean canScrollHorizontally ()

查询当前是否支持水平滚动。 默认实现返回false。

Returns
boolean True if this LayoutManager can scroll the current contents horizontally

canScrollVertically

boolean canScrollVertically ()

查询当前是否支持垂直滚动。 默认实现返回false。

Returns
boolean True if this LayoutManager can scroll the current contents vertically

checkLayoutParams

boolean checkLayoutParams (RecyclerView.LayoutParams lp)

确定提供的LayoutParams对象的有效性。

这应该检查以确保对象是正确的类型,并且所有值都在可接受的范围内。 对于非空参数,默认实现返回true

Parameters
lp RecyclerView.LayoutParams: LayoutParams object to check
Returns
boolean true if this LayoutParams object is valid, false otherwise

chooseSize

int chooseSize (int spec, 
                int desired, 
                int min)

从给定的规格和参数中选择最接近所需尺寸的尺寸,并符合规格。

Parameters
spec int: The measureSpec
desired int: The preferred measurement
min int: The minimum value
Returns
int A size that fits to the given specs

computeHorizontalScrollExtent

int computeHorizontalScrollExtent (RecyclerView.State state)

如果您想支持滚动条,请覆盖此方法。

详情请阅读 computeHorizontalScrollExtent()

默认实现返回0。

Parameters
state RecyclerView.State: Current state of RecyclerView
Returns
int The horizontal extent of the scrollbar's thumb

也可以看看:

computeHorizontalScrollOffset

int computeHorizontalScrollOffset (RecyclerView.State state)

如果您想支持滚动条,请覆盖此方法。

详情请阅读 computeHorizontalScrollOffset()

默认实现返回0。

Parameters
state RecyclerView.State: Current State of RecyclerView where you can find total item count
Returns
int The horizontal offset of the scrollbar's thumb

也可以看看:

computeHorizontalScrollRange

int computeHorizontalScrollRange (RecyclerView.State state)

如果您想支持滚动条,请覆盖此方法。

详情请阅读 computeHorizontalScrollRange()

默认实现返回0。

Parameters
state RecyclerView.State: Current State of RecyclerView where you can find total item count
Returns
int The total horizontal range represented by the vertical scrollbar

也可以看看:

computeVerticalScrollExtent

int computeVerticalScrollExtent (RecyclerView.State state)

如果您想支持滚动条,请覆盖此方法。

详情请阅读 computeVerticalScrollExtent()

Default implementation returns 0.

Parameters
state RecyclerView.State: Current state of RecyclerView
Returns
int The vertical extent of the scrollbar's thumb

也可以看看:

computeVerticalScrollOffset

int computeVerticalScrollOffset (RecyclerView.State state)

如果您想支持滚动条,请覆盖此方法。

阅读 computeVerticalScrollOffset()了解详情。

默认实现返回0。

Parameters
state RecyclerView.State: Current State of RecyclerView where you can find total item count
Returns
int The vertical offset of the scrollbar's thumb

也可以看看:

computeVerticalScrollRange

int computeVerticalScrollRange (RecyclerView.State state)

如果您想支持滚动条,请覆盖此方法。

详情请阅读 computeVerticalScrollRange()

默认实现返回0。

Parameters
state RecyclerView.State: Current State of RecyclerView where you can find total item count
Returns
int The total vertical range represented by the vertical scrollbar

也可以看看:

detachAndScrapAttachedViews

void detachAndScrapAttachedViews (RecyclerView.Recycler recycler)

临时分离并取消所有当前连接的子视图。 视图将被废弃到给定的Recycler中。 回收站可能更喜欢在先前回收的其他视图之前重新使用废料视图。

Parameters
recycler RecyclerView.Recycler: Recycler to scrap views into

detachAndScrapView

void detachAndScrapView (View child, 
                RecyclerView.Recycler recycler)

分离子视图并将其添加到 Recycler's废料堆。

刮掉一个视图允许它被反弹并重用来显示更新或不同的数据。

Parameters
child View: Child to detach and scrap
recycler RecyclerView.Recycler: Recycler to deposit the new scrap view into

detachAndScrapViewAt

void detachAndScrapViewAt (int index, 
                RecyclerView.Recycler recycler)

分离子视图并将其添加到 Recycler's废料堆。

刮掉一个视图允许它被反弹并重用来显示更新或不同的数据。

Parameters
index int: Index of child to detach and scrap
recycler RecyclerView.Recycler: Recycler to deposit the new scrap view into

detachView

void detachView (View child)

暂时分离子视图。

LayoutManagers可能希望执行轻量级的分离操作来重新排列当前连接到RecyclerView的视图。 通常,LayoutManager实现将要使用detachAndScrapView(android.view.View, RecyclerView.Recycler)以便分离的视图可以被反弹并重新使用。

如果LayoutManager使用此方法分离视图,则在由RecyclerView调用的LayoutManager入口点方法返回之前, 必须使用 reattachfully remove分离的视图。

Parameters
child View: Child to detach

detachViewAt

void detachViewAt (int index)

暂时分离子视图。

LayoutManagers可能希望执行轻量级的分离操作来重新排列当前连接到RecyclerView的视图。 通常,LayoutManager实现将希望使用detachAndScrapView(android.view.View, RecyclerView.Recycler)以便分离的视图可以被反弹并重新使用。

如果LayoutManager使用此方法分离视图,则在由RecyclerView调用的LayoutManager入口点方法返回之前, 必须使用 reattachfully remove分离的视图。

Parameters
index int: Index of the child to detach

endAnimation

void endAnimation (View view)

结束由 RecyclerView.ItemAnimator创建的视图上的所有动画。

Parameters
view View: The View for which the animations should be ended.

也可以看看:

findContainingItemView

View findContainingItemView (View view)

遍历给定视图的祖先,并返回包含它的项视图,也返回LayoutManager的直接子视图。

请注意,如果视图是RecyclerView的子视图,但不是LayoutManager的子视图(例如,运行消失动画),则此方法可能会返回null。

Parameters
view View: The view that is a descendant of the LayoutManager.
Returns
View The direct child of the LayoutManager which contains the given view or null if the provided view is not a descendant of this LayoutManager.

也可以看看:

findViewByPosition

View findViewByPosition (int position)

查找代表给定适配器位置的视图。

此方法遍历每个孩子,因为它没有关于孩子顺序的信息。 如果您的LayoutManager保留有关子视图的数据,请重写此方法以提高性能。

如果通过 ignoreView(View)忽略视图,则此方法也会忽略它。

Parameters
position int: Position of the item in adapter
Returns
View The child view that represents the given position or null if the position is not laid out

generateDefaultLayoutParams

RecyclerView.LayoutParams generateDefaultLayoutParams ()

为RecyclerView的子项创建一个默认的 LayoutParams对象。

LayoutManagers通常会使用自定义LayoutParams类型来存储特定于布局的额外信息。 客户端代码应为此目的RecyclerView.LayoutParams

重要提示:如果您使用自己定制的 LayoutParams类型,你还必须重写 checkLayoutParams(LayoutParams)generateLayoutParams(android.view.ViewGroup.LayoutParams)generateLayoutParams(android.content.Context, android.util.AttributeSet)

Returns
RecyclerView.LayoutParams A new LayoutParams for a child view

generateLayoutParams

RecyclerView.LayoutParams generateLayoutParams (Context c, 
                AttributeSet attrs)

从膨胀的布局资源中创建适合此LayoutManager的LayoutParams对象。

重要提示:如果您使用自己定制的 LayoutParams类型,你还必须重写 checkLayoutParams(LayoutParams)generateLayoutParams(android.view.ViewGroup.LayoutParams)generateLayoutParams(android.content.Context, android.util.AttributeSet)

Parameters
c Context: Context for obtaining styled attributes
attrs AttributeSet: AttributeSet describing the supplied arguments
Returns
RecyclerView.LayoutParams a new LayoutParams object

generateLayoutParams

RecyclerView.LayoutParams generateLayoutParams (ViewGroup.LayoutParams lp)

如果可能,创建一个适用于此LayoutManager的LayoutParams对象,从所提供的LayoutParams对象中复制相关值。

重要提示:如果您使用自己定制的 LayoutParams类型,你还必须重写 checkLayoutParams(LayoutParams)generateLayoutParams(android.view.ViewGroup.LayoutParams)generateLayoutParams(android.content.Context, android.util.AttributeSet)

Parameters
lp ViewGroup.LayoutParams: Source LayoutParams object to copy values from
Returns
RecyclerView.LayoutParams a new LayoutParams object

getBaseline

int getBaseline ()

RecyclerView的文本基线从顶部边界返回偏移量。

Returns
int The offset of the RecyclerView's text baseline from the its top boundary; -1 if there is no baseline.

getBottomDecorationHeight

int getBottomDecorationHeight (View child)

返回应用于子项底部的项目装饰的总高度。

请注意,在测量视图或 calculateItemDecorationsForChild(View, Rect)之前,此值不会更新。

Parameters
child View: Child to query
Returns
int The total height of item decorations applied to the child's bottom.

也可以看看:

getChildAt

View getChildAt (int index)

返回给定索引处的子视图

Parameters
index int: Index of child to return
Returns
View Child view at index

getChildCount

int getChildCount ()

返回附加到父RecyclerView的当前子视图数。 这不包括临时分离和/或报废的子视图。

Returns
int Number of attached children

getChildMeasureSpec

int getChildMeasureSpec (int parentSize, 
                int parentMode, 
                int padding, 
                int childDimension, 
                boolean canScroll)

计算MeasureSpec值以测量一维中的子视图。

Parameters
parentSize int: Size of the parent view where the child will be placed
parentMode int: The measurement spec mode of the parent
padding int: Total space currently consumed by other elements of parent
childDimension int: Desired size of the child view, or FILL_PARENT/WRAP_CONTENT. Generally obtained from the child view's LayoutParams
canScroll boolean: true if the parent RecyclerView can scroll in this dimension
Returns
int a MeasureSpec value for the child view

getChildMeasureSpec

int getChildMeasureSpec (int parentSize, 
                int padding, 
                int childDimension, 
                boolean canScroll)

此方法已弃用。
使用getChildMeasureSpec(int, int, int, int, boolean)

计算MeasureSpec值以测量一维中的子视图。

Parameters
parentSize int: Size of the parent view where the child will be placed
padding int: Total space currently consumed by other elements of the parent
childDimension int: Desired size of the child view, or FILL_PARENT/WRAP_CONTENT. Generally obtained from the child view's LayoutParams
canScroll boolean: true if the parent RecyclerView can scroll in this dimension
Returns
int a MeasureSpec value for the child view

getClipToPadding

boolean getClipToPadding ()

检查RecyclerView是否配置为将子视图剪辑到其填充。

Returns
boolean true if this RecyclerView clips children to its padding, false otherwise

getColumnCountForAccessibility

int getColumnCountForAccessibility (RecyclerView.Recycler recycler, 
                RecyclerView.State state)

返回可访问性的列数。

如果LayoutManager支持水平滚动,则默认实现返回适配器中的项目数,如果LayoutManager不支持水平滚动,则返回1。

Parameters
recycler RecyclerView.Recycler: The Recycler that can be used to convert view positions into adapter positions
state RecyclerView.State: The current state of RecyclerView
Returns
int The number of rows in LayoutManager for accessibility.

getDecoratedBottom

int getDecoratedBottom (View child)

返回其父级中给定子视图的底部边缘,由应用的任何 ItemDecorations偏移。

Parameters
child View: Child to query
Returns
int Child bottom edge with offsets applied

也可以看看:

getDecoratedBoundsWithMargins

void getDecoratedBoundsWithMargins (View view, 
                Rect outBounds)

返回视图的边界,包括其装饰和边距。

Parameters
view View: The view element to check
outBounds Rect: A rect that will receive the bounds of the element including its decoration and margins.

getDecoratedLeft

int getDecoratedLeft (View child)

返回其父级中给定子视图的左边缘,由应用的任何 ItemDecorations偏移。

Parameters
child View: Child to query
Returns
int Child left edge with offsets applied

也可以看看:

getDecoratedMeasuredHeight

int getDecoratedMeasuredHeight (View child)

返回给定孩子的测量身高,加上由 ItemDecorations应用的任何插入物的额外尺寸。

Parameters
child View: Child view to query
Returns
int child's measured height plus ItemDecoration insets

也可以看看:

getDecoratedMeasuredWidth

int getDecoratedMeasuredWidth (View child)

返回给定孩子的测量宽度,加上由 ItemDecorations应用的任何插入的额外尺寸。

Parameters
child View: Child view to query
Returns
int child's measured width plus ItemDecoration insets

也可以看看:

getDecoratedRight

int getDecoratedRight (View child)

返回其父级中给定子视图的右边缘,由应用的任何 ItemDecorations

Parameters
child View: Child to query
Returns
int Child right edge with offsets applied

也可以看看:

getDecoratedTop

int getDecoratedTop (View child)

返回其父级中给定子视图的上边缘,由任何应用的 ItemDecorations

Parameters
child View: Child to query
Returns
int Child top edge with offsets applied

也可以看看:

getFocusedChild

View getFocusedChild ()

返回包含焦点的项目视图。

Returns
View A direct child of RecyclerView which has focus or contains the focused child.

getHeight

int getHeight ()

返回父RecyclerView的高度

Returns
int Height in pixels

getHeightMode

int getHeightMode ()

返回RecyclerView的高度测量规格模式。

仅当LayoutManager通过 setAutoMeasureEnabled(boolean)选择自动测量api时才设置此值。

当RecyclerView运行布局时,即使使用不同的规格模式测量,此值也始终设置为 EXACTLY

Returns
int Height measure spec mode.

也可以看看:

getItemCount

int getItemCount ()

返回绑定到父RecyclerView的适配器中的项目数。

请注意,这个数字不一定等于getItemCount() 在状态可用的方法中,应该使用getItemCount() 有关更多详细信息,请检查文档getItemCount()

Returns
int The number of items in the bound adapter

也可以看看:

getItemViewType

int getItemViewType (View view)

返回由适配器定义的视图类型。

Parameters
view View: The view to query
Returns
int The type of the view assigned by the adapter.

getLayoutDirection

int getLayoutDirection ()

返回此RecyclerView的解析布局方向。

Returns
int LAYOUT_DIRECTION_RTL if the layout direction is RTL or returns LAYOUT_DIRECTION_LTR if the layout direction is not RTL.

getLeftDecorationWidth

int getLeftDecorationWidth (View child)

返回应用于孩子左侧的项目装饰的总宽度。

请注意,在测量视图或 calculateItemDecorationsForChild(View, Rect)之前,此值不会更新。

Parameters
child View: Child to query
Returns
int The total width of item decorations applied to the child's left.

也可以看看:

getMinimumHeight

int getMinimumHeight ()

Returns
int The host RecyclerView's getMinimumHeight()

getMinimumWidth

int getMinimumWidth ()

Returns
int The host RecyclerView's getMinimumWidth()

getPaddingBottom

int getPaddingBottom ()

返回父RecyclerView的底部填充

Returns
int Padding in pixels

getPaddingEnd

int getPaddingEnd ()

返回父RecyclerView的结束填充

Returns
int Padding in pixels

getPaddingLeft

int getPaddingLeft ()

返回父RecyclerView的左侧填充

Returns
int Padding in pixels

getPaddingRight

int getPaddingRight ()

返回父级RecyclerView的正确填充

Returns
int Padding in pixels

getPaddingStart

int getPaddingStart ()

返回父RecyclerView的开始填充

Returns
int Padding in pixels

getPaddingTop

int getPaddingTop ()

返回父级RecyclerView的顶部填充

Returns
int Padding in pixels

getPosition

int getPosition (View view)

返回由给定视图表示的项目的适配器位置。 这不包含最后一次布局后可能发生的适配器更改。

Parameters
view View: The view to query
Returns
int The adapter position of the item which is rendered by this View.

getProperties

RecyclerView.LayoutManager.Properties getProperties (Context context, 
                AttributeSet attrs, 
                int defStyleAttr, 
                int defStyleRes)

分析xml属性以获取布局管理器使用的最常用属性。

相关XML属性:

Parameters
context Context
attrs AttributeSet
defStyleAttr int
defStyleRes int
Returns
RecyclerView.LayoutManager.Properties an object containing the properties as specified in the attrs.

getRightDecorationWidth

int getRightDecorationWidth (View child)

返回应用于子项右侧的项目装饰的总宽度。

请注意,在测量视图或 calculateItemDecorationsForChild(View, Rect)之前,此值不会更新。

Parameters
child View: Child to query
Returns
int The total width of item decorations applied to the child's right.

也可以看看:

getRowCountForAccessibility

int getRowCountForAccessibility (RecyclerView.Recycler recycler, 
                RecyclerView.State state)

返回可访问性的行数。

如果LayoutManager支持垂直滚动,则默认实现返回适配器中的项目数,如果LayoutManager不支持垂直滚动,则返回1。

Parameters
recycler RecyclerView.Recycler: The Recycler that can be used to convert view positions into adapter positions
state RecyclerView.State: The current state of RecyclerView
Returns
int The number of rows in LayoutManager for accessibility.

getSelectionModeForAccessibility

int getSelectionModeForAccessibility (RecyclerView.Recycler recycler, 
                RecyclerView.State state)

返回可访问性的选择模式。 应该是SELECTION_MODE_NONESELECTION_MODE_SINGLE或者SELECTION_MODE_MULTIPLE

默认实现返回 SELECTION_MODE_NONE

Parameters
recycler RecyclerView.Recycler: The Recycler that can be used to convert view positions into adapter positions
state RecyclerView.State: The current state of RecyclerView
Returns
int Selection mode for accessibility. Default implementation returns SELECTION_MODE_NONE.

getTopDecorationHeight

int getTopDecorationHeight (View child)

返回应用于子项目顶部的项目装饰的总高度。

请注意,在测量视图或 calculateItemDecorationsForChild(View, Rect)之前,此值不会更新。

Parameters
child View: Child to query
Returns
int The total height of item decorations applied to the child's top.

也可以看看:

getTransformedBoundingBox

void getTransformedBoundingBox (View child, 
                boolean includeDecorInsets, 
                Rect out)

计算视图的边界框,同时考虑其关于RecyclerView的矩阵变化(平移,缩放等)。

如果 includeDecorInsetstrue ,则在应用视图矩阵之前先应用它们,以便装饰偏移也经历相同的变换。

Parameters
child View: The ItemView whose bounding box should be calculated.
includeDecorInsets boolean: True if the decor insets should be included in the bounding box
out Rect: The rectangle into which the output will be written.

getWidth

int getWidth ()

返回父RecyclerView的宽度

Returns
int Width in pixels

getWidthMode

int getWidthMode ()

返回RecyclerView的宽度测量规格模式。

仅当LayoutManager通过 setAutoMeasureEnabled(boolean)选择自动测量api时才设置此值。

RecyclerView正在运行布局时,即使使用不同的规格模式测量,此值也始终设置为 EXACTLY

Returns
int Width measure spec mode.

也可以看看:

hasFocus

boolean hasFocus ()

如果此LayoutManager绑定的RecyclerView具有或包含焦点,则返回true。

Returns
boolean true if the RecyclerView has or contains focus

也可以看看:

ignoreView

void ignoreView (View view)

标记一个视图,以便它不会被废弃或回收。

忽略孩子的范围严格限于位置跟踪,报废和再循环。 诸如removeAndRecycleAllViews(Recycler)方法将忽略孩子,而removeAllViews()offsetChildrenHorizontal(int)不会忽略孩子。

在此孩子可以再次回收之前,您必须致电 stopIgnoringView(View)

只有当您的LayoutManger处于onLayout或onScroll回调中时,才可以调用此方法。

Parameters
view View: View to ignore.

也可以看看:

isAttachedToWindow

boolean isAttachedToWindow ()

返回LayoutManager当前是否连接到附加到窗口的RecyclerView。

Returns
boolean True if this LayoutManager is controlling a RecyclerView and the RecyclerView is attached to window.

isAutoMeasureEnabled

boolean isAutoMeasureEnabled ()

返回LayoutManager是否使用自动测量API。

Returns
boolean True if the LayoutManager is measured by the RecyclerView or false if it measures itself.

也可以看看:

isFocused

boolean isFocused ()

如果此布局管理器的RecyclerView绑定到焦点,则返回true。

Returns
boolean True if the RecyclerView has focus, false otherwise.

也可以看看:

isLayoutHierarchical

boolean isLayoutHierarchical (RecyclerView.Recycler recycler, 
                RecyclerView.State state)

返回布局是否为层次结构或不用于可访问性。

默认实现返回false。

Parameters
recycler RecyclerView.Recycler: The Recycler that can be used to convert view positions into adapter positions
state RecyclerView.State: The current state of RecyclerView
Returns
boolean True if layout is hierarchical.

isMeasurementCacheEnabled

boolean isMeasurementCacheEnabled ()

除了View Framework的测量高速缓存外,RecyclerView还为子项使用自己的附加测量高速缓存,以避免在不必要时重新测量它们。 它默认开启,但可以通过setMeasurementCacheEnabled(boolean)关闭。

Returns
boolean True if measurement cache is enabled, false otherwise.

也可以看看:

isSmoothScrolling

boolean isSmoothScrolling ()

Returns
boolean true if RecycylerView is currently in the state of smooth scrolling.

layoutDecorated

void layoutDecorated (View child, 
                int left, 
                int top, 
                int right, 
                int bottom)

使用包含任何当前的 ItemDecorations坐标在RecyclerView中布置给定的子视图。

布局管理员应尽可能使用包含物品装饰插图的尺寸和坐标。 这允许LayoutManager有效地忽略测量和布局代码中的装饰插入。 请参阅以下方法:

Parameters
child View: Child to lay out
left int: Left edge, with item decoration insets included
top int: Top edge, with item decoration insets included
right int: Right edge, with item decoration insets included
bottom int: Bottom edge, with item decoration insets included

也可以看看:

layoutDecoratedWithMargins

void layoutDecoratedWithMargins (View child, 
                int left, 
                int top, 
                int right, 
                int bottom)

使用包含任何当前 ItemDecorations和边距的坐标在RecyclerView内布置给定的子视图。

布局管理员应尽可能使用包含物品装饰插图的尺寸和坐标。 这允许LayoutManager有效地忽略测量和布局代码中的装饰插入。 请参阅以下方法:

Parameters
child View: Child to lay out
left int: Left edge, with item decoration insets and left margin included
top int: Top edge, with item decoration insets and top margin included
right int: Right edge, with item decoration insets and right margin included
bottom int: Bottom edge, with item decoration insets and bottom margin included

也可以看看:

measureChild

void measureChild (View child, 
                int widthUsed, 
                int heightUsed)

使用标准测量策略测量子视图,将父RecyclerView的填充和任何添加的项目装饰考虑在内。

If the RecyclerView can be scrolled in either dimension the caller may pass 0 as the widthUsed or heightUsed parameters as they will be irrelevant.

Parameters
child View: Child view to measure
widthUsed int: Width in pixels currently consumed by other views, if relevant
heightUsed int: Height in pixels currently consumed by other views, if relevant

measureChildWithMargins

void measureChildWithMargins (View child, 
                int widthUsed, 
                int heightUsed)

使用标准测量策略测量子视图,考虑父RecyclelerView的填充,任何添加的项目装饰和子边缘。

如果RecyclerView可以在任一维中滚动,则调用者可以将0作为widthUsed或heightUsed参数传递,因为它们将不相关。

Parameters
child View: Child view to measure
widthUsed int: Width in pixels currently consumed by other views, if relevant
heightUsed int: Height in pixels currently consumed by other views, if relevant

moveView

void moveView (int fromIndex, 
                int toIndex)

将View从一个位置移动到另一个位置。

Parameters
fromIndex int: The View's initial index
toIndex int: The View's target index

offsetChildrenHorizontal

void offsetChildrenHorizontal (int dx)

沿水平轴偏移附加到父RecyclerView的所有子视图dx个像素。

Parameters
dx int: Pixels to offset by

offsetChildrenVertical

void offsetChildrenVertical (int dy)

沿垂直轴偏移由dy像素附加到父级RecyclerView的所有子视图。

Parameters
dy int: Pixels to offset by

onAdapterChanged

void onAdapterChanged (Adapter oldAdapter, 
                Adapter newAdapter)

如果此LayoutManager绑定的RecyclerView具有不同的适配器集,则调用此方法。 LayoutManager可以使用这个机会清除缓存并配置状态,以便它可以适当地重新布局新数据和潜在的新视图类型。

默认实现将删除所有当前附加的视图。

Parameters
oldAdapter Adapter: The previous adapter instance. Will be null if there was previously no adapter.
newAdapter Adapter: The new adapter instance. Might be null if setAdapter(RecyclerView.Adapter) is called with null.

onAddFocusables

boolean onAddFocusables (RecyclerView recyclerView, 
                ArrayList<View> views, 
                int direction, 
                int focusableMode)

被调用来填充RecyclerView中的可聚焦视图。

LayoutManager的实现应该返回 true如果默认行为 addFocusables(java.util.ArrayList, int)应该被抑制。

默认实现返回 false以触发RecyclerView回退到默认的ViewGroup行为。

Parameters
recyclerView RecyclerView: The RecyclerView hosting this LayoutManager
views ArrayList: List of output views. This method should add valid focusable views to this list.
direction int: One of FOCUS_UP, FOCUS_DOWN, FOCUS_LEFT, FOCUS_RIGHT, FOCUS_BACKWARD, FOCUS_FORWARD
focusableMode int: The type of focusables to be added.
Returns
boolean true to suppress the default behavior, false to add default focusables after this method returns.

也可以看看:

onAttachedToWindow

void onAttachedToWindow (RecyclerView view)

当此LayoutManager同时附加到RecyclerView并且RecyclerView附加到窗口时调用。

如果RecyclerView重新连接了相同的LayoutManager和Adapter,则它可能不会调用 onLayoutChildren(Recycler, State)如果没有更改,并且RecyclerView在分离时没有请求布局。

子类实现应该始终调用超类的实现。

Parameters
view RecyclerView: The RecyclerView this LayoutManager is bound to

也可以看看:

onDetachedFromWindow

void onDetachedFromWindow (RecyclerView view, 
                RecyclerView.Recycler recycler)

当此LayoutManager与其父RecyclelerView分离时,或者其父RecyclerView从其窗口分离时调用。

LayoutManager应清除所有视图引用,因为另一个LayoutManager可能被分配给RecyclerView。

如果RecyclerView重新连接了相同的LayoutManager和Adapter,则它可能不会调用 onLayoutChildren(Recycler, State)如果没有更改,并且RecyclerView在分离时没有请求布局。

如果您的LayoutManager具有在分离时清理的视图引用,它还应该调用 requestLayout()以确保在重新附加RecyclerView时重新布局它。

子类实现应该始终调用超类的实现。

Parameters
view RecyclerView: The RecyclerView this LayoutManager is bound to
recycler RecyclerView.Recycler: The recycler to use if you prefer to recycle your children instead of keeping them around.

也可以看看:

onDetachedFromWindow

void onDetachedFromWindow (RecyclerView view)

此方法已弃用。
覆盖onDetachedFromWindow(RecyclerView, Recycler)

Parameters
view RecyclerView

onFocusSearchFailed

View onFocusSearchFailed (View focused, 
                int direction, 
                RecyclerView.Recycler recycler, 
                RecyclerView.State state)

当在给定方向上搜索可聚焦视图时调用RecyclerView的当前内容失败。

这是LayoutManager在给定方向上填充视图以满足请求的机会(如果可以)。 LayoutManager应该附加并返回要聚焦的视图。 默认实现返回null。

Parameters
focused View: The currently focused view
direction int: One of FOCUS_UP, FOCUS_DOWN, FOCUS_LEFT, FOCUS_RIGHT, FOCUS_BACKWARD, FOCUS_FORWARD or 0 for not applicable
recycler RecyclerView.Recycler: The recycler to use for obtaining views for currently offscreen items
state RecyclerView.State: Transient state of RecyclerView
Returns
View The chosen view to be focused

onInitializeAccessibilityEvent

void onInitializeAccessibilityEvent (AccessibilityEvent event)

Parameters
event AccessibilityEvent

onInitializeAccessibilityEvent

void onInitializeAccessibilityEvent (RecyclerView.Recycler recycler, 
                RecyclerView.State state, 
                AccessibilityEvent event)

由可访问性委托调用以初始化可访问性事件。

默认实现将项目计数和滚动信息添加到事件。

Parameters
recycler RecyclerView.Recycler: The Recycler that can be used to convert view positions into adapter positions
state RecyclerView.State: The current state of RecyclerView
event AccessibilityEvent: The event instance to initialize

也可以看看:

onInitializeAccessibilityNodeInfo

void onInitializeAccessibilityNodeInfo (RecyclerView.Recycler recycler, 
                RecyclerView.State state, 
                AccessibilityNodeInfoCompat info)

当关于当前布局的信息应该被填充时,由AccessibilityDelegate调用。

默认实现添加 AccessibilityNodeInfoCompat.CollectionInfoCompat

你应该重写 getRowCountForAccessibility(RecyclerView.Recycler, RecyclerView.State)getColumnCountForAccessibility(RecyclerView.Recycler, RecyclerView.State)isLayoutHierarchical(RecyclerView.Recycler, RecyclerView.State)getSelectionModeForAccessibility(RecyclerView.Recycler, RecyclerView.State)更准确的辅助功能信息。

Parameters
recycler RecyclerView.Recycler: The Recycler that can be used to convert view positions into adapter positions
state RecyclerView.State: The current state of RecyclerView
info AccessibilityNodeInfoCompat: The info that should be filled by the LayoutManager

也可以看看:

onInitializeAccessibilityNodeInfoForItem

void onInitializeAccessibilityNodeInfoForItem (RecyclerView.Recycler recycler, 
                RecyclerView.State state, 
                View host, 
                AccessibilityNodeInfoCompat info)

当应该填充特定项目的可访问性信息时,由AccessibilityDelegate调用。

默认实现添加有关该项目的基本定位信息。

Parameters
recycler RecyclerView.Recycler: The Recycler that can be used to convert view positions into adapter positions
state RecyclerView.State: The current state of RecyclerView
host View: The child for which accessibility node info should be populated
info AccessibilityNodeInfoCompat: The info to fill out about the item

也可以看看:

onInterceptFocusSearch

View onInterceptFocusSearch (View focused, 
                int direction)

此方法使LayoutManager有机会在使用默认行为FocusFinder之前拦截初始焦点搜索。 如果此方法返回null FocusFinder将尝试查找可调焦的子视图。 如果失败,则将onFocusSearchFailed(View, int, RecyclerView.Recycler, RecyclerView.State)以使LayoutManager有机会为没有附加视图的项目添加新视图。 LayoutManager不应该添加或删除这个方法的视图。

Parameters
focused View: The currently focused view
direction int: One of FOCUS_UP, FOCUS_DOWN, FOCUS_LEFT, FOCUS_RIGHT, FOCUS_BACKWARD, FOCUS_FORWARD
Returns
View A descendant view to focus or null to fall back to default behavior. The default implementation returns null.

onItemsAdded

void onItemsAdded (RecyclerView recyclerView, 
                int positionStart, 
                int itemCount)

当项目已添加到适配器时调用。 如果插入的项目需要刷新当前可见的一组子视图,则LayoutManager可以选择requestLayout。 (例如,当前空白空间将由附加项目填充等)

onItemsChanged

void onItemsChanged (RecyclerView recyclerView)

notifyDataSetChanged()被触发时调用,而不是提供有关实际更改内容的详细信息。

onItemsMoved

void onItemsMoved (RecyclerView recyclerView, 
                int from, 
                int to, 
                int itemCount)

在使用适配器移动项目时调用。

请注意,一个项目也可能会改变位置以响应另一个ADD / REMOVE / MOVE操作。 此回调仅在调用notifyItemMoved(int, int)调用。

onItemsRemoved

void onItemsRemoved (RecyclerView recyclerView, 
                int positionStart, 
                int itemCount)

当从适配器中移除项目时调用。

onItemsUpdated

void onItemsUpdated (RecyclerView recyclerView, 
                int positionStart, 
                int itemCount)

在适配器中更改了项目时调用。 要接收有效负载, onItemsUpdated(RecyclerView, int, int, Object)改为onItemsUpdated(RecyclerView, int, int, Object) ,那么此回调将不会被调用。

onItemsUpdated

void onItemsUpdated (RecyclerView recyclerView, 
                int positionStart, 
                int itemCount, 
                Object payload)

当适配器和可选有效载荷中的项目已更改时调用。 默认实现调用onItemsUpdated(RecyclerView, int, int)

onLayoutChildren

void onLayoutChildren (RecyclerView.Recycler recycler, 
                RecyclerView.State state)

从给定的适配器中布置所有相关的子视图。 LayoutManager负责项目动画的行为。 默认情况下,RecyclerView具有非空ItemAnimator ,并且启用简单的项目动画。 这意味着对适配器的添加/删除操作将导致动画添加新的或出现的项目,删除或消失的项目以及移动的项目。 如果LayoutManager从supportsPredictiveItemAnimations() (这是默认设置)返回false并在onLayoutChildren(Recycler, State)期间运行正常的布局操作,那么RecyclerView将具有足够的信息以简单的方式运行这些动画。 例如,默认的ItemAnimator, DefaultItemAnimator ,只是淡入淡出视图,无论它们是实际添加/删除,还是由于其他添加/删除操作而在屏幕上移动或移出。

一个LayoutManager想要一个更好的项目动漫体验,其中的项目可以是动画上,并根据当他们在屏幕上不存在在那里的项目关闭屏幕,则LayoutManager随后应返回true supportsPredictiveItemAnimations() ,并添加额外的逻辑来onLayoutChildren(Recycler, State) 支持预测动画意味着onLayoutChildren(Recycler, State)将被调用两次; 一次是作为“预先”布局步骤,以确定项目在真实布局之前的位置,并再次执行“真实”布局。 在预先布置阶段,项目会记住他们的布局前位置,以便适当地布置它们。 此外, removed从废料中返回removed件物品,以帮助确定其他物品的正确放置位置。 这些删除的项目不应该添加到子列表中,而应该用于帮助计算其他视图的正确定位,包括以前不在屏幕上的视图(称为APPEARING视图),但可以确定其前置布局离屏位置给出有关预布局移除视图的额外信息。

第二个布局过程是真正的布局,其中只使用未删除的视图。 如果supportsPredictiveItemAnimations()返回true,则此通道中唯一的附加要求是注意在布局之前哪些视图存在于子列表中,哪些不在布局之后(称为DISAPPEARING视图),以及适当地定位/布置这些视图,而不考虑RecyclerView的实际范围。 这允许动画系统知道动画这些消失的视图的位置。

RecyclerView的默认LayoutManager实现已经处理了所有动画需求。 RecyclerView的客户可以直接使用这些布局管理器中的一个,或者查看onLayoutChildren()的实现来了解它们如何解释APPEARING和DISAPPEARING视图。

Parameters
recycler RecyclerView.Recycler: Recycler to use for fetching potentially cached views for a position
state RecyclerView.State: Transient state of RecyclerView

onLayoutCompleted

void onLayoutCompleted (RecyclerView.State state)

完整布局计算完成后调用。 由于动画或布局测量,布局计算可能包含多个onLayoutChildren(Recycler, State)通话,但它只包含一个onLayoutCompleted(State)通话。 该方法将在layout(int, int, int, int)调用结束时调用。

这是LayoutManager做一些清理的好地方,例如待处理的滚动位置,保存的状态等。

Parameters
state RecyclerView.State: Transient state of RecyclerView

onMeasure

void onMeasure (RecyclerView.Recycler recycler, 
                RecyclerView.State state, 
                int widthSpec, 
                int heightSpec)

测量附加的RecyclerView。 实现必须在返回之前调用setMeasuredDimension(int, int)

默认实现将处理确切的测量,并且如果测量为未知,则遵守主机RecyclerView的最小宽度和高度属性。 AT_MOST测量将被视为一致,并且RecyclerView将消耗所有可用空间。

Parameters
recycler RecyclerView.Recycler: Recycler
state RecyclerView.State: Transient state of RecyclerView
widthSpec int: Width View.MeasureSpec
heightSpec int: Height View.MeasureSpec

onRequestChildFocus

boolean onRequestChildFocus (RecyclerView parent, 
                View child, 
                View focused)

此方法已弃用。
使用onRequestChildFocus(RecyclerView, State, View, View)

Parameters
parent RecyclerView
child View
focused View
Returns
boolean

onRequestChildFocus

boolean onRequestChildFocus (RecyclerView parent, 
                RecyclerView.State state, 
                View child, 
                View focused)

当RecyclerView的后代视图请求焦点时调用。

希望保持聚焦视图在视图的特定部分对齐的LayoutManager可以在覆盖此方法时实现该行为。

如果LayoutManager执行的不同行为应该覆盖在屏幕上滚动焦点子项的默认行为,而不是与其一起运行,则此方法应返回true。

Parameters
parent RecyclerView: The RecyclerView hosting this LayoutManager
state RecyclerView.State: Current state of RecyclerView
child View: Direct child of the RecyclerView containing the newly focused view
focused View: The newly focused view. This may be the same view as child or it may be null
Returns
boolean true if the default scroll behavior should be suppressed

onRestoreInstanceState

void onRestoreInstanceState (Parcelable state)

Parameters
state Parcelable

onSaveInstanceState

Parcelable onSaveInstanceState ()

当LayoutManager保存其状态时调用。 如果重新创建LayoutManager,这是保存滚动位置,配置和恢复相同布局状态所需的其他任何东西的好时机。

RecyclerView不会验证LayoutManager是否在状态保存和恢复之间更改。 这可以让你在你的布局管理器之间共享信息,但它也是你的责任,确保他们使用相同的可分类。

Returns
Parcelable Necessary information for LayoutManager to be able to restore its state

onScrollStateChanged

void onScrollStateChanged (int state)

RecyclerView调用此方法来通知LayoutManager滚动状态已更改。

Parameters
state int: The new scroll state for RecyclerView

performAccessibilityAction

boolean performAccessibilityAction (RecyclerView.Recycler recycler, 
                RecyclerView.State state, 
                int action, 
                Bundle args)

当RecyclerView请求操作时,由AccessibilityDelegate调用。

Parameters
recycler RecyclerView.Recycler: The Recycler that can be used to convert view positions into adapter positions
state RecyclerView.State: The current state of RecyclerView
action int: The action to perform
args Bundle: Optional action arguments
Returns
boolean

也可以看看:

performAccessibilityActionForItem

boolean performAccessibilityActionForItem (RecyclerView.Recycler recycler, 
                RecyclerView.State state, 
                View view, 
                int action, 
                Bundle args)

当LayoutManager的其中一个子级请求辅助功能操作时,由AccessibilityDelegate调用。

默认实现不做任何事情。

Parameters
recycler RecyclerView.Recycler: The Recycler that can be used to convert view positions into adapter positions
state RecyclerView.State: The current state of RecyclerView
view View: The child view on which the action is performed
action int: The action to perform
args Bundle: Optional action arguments
Returns
boolean true if action is handled

也可以看看:

postOnAnimation

void postOnAnimation (Runnable action)

使Runnable在下一个动画时间步骤上执行。 runnable将在用户界面线程上运行。

当LayoutManager未连接到RecyclerView时调用此方法不起作用。

Parameters
action Runnable: The Runnable that will be executed.

也可以看看:

removeAllViews

void removeAllViews ()

从当前连接的RecyclerView中删除所有视图。 这不会回收任何受影响的视图; 如果需要,LayoutManager负责这样做。

removeAndRecycleAllViews

void removeAndRecycleAllViews (RecyclerView.Recycler recycler)

删除所有视图并使用给定的回收站回收它们。

如果你想清理缓存的视图,你也应该调用 clear()

如果一个视图被标记为“忽略”,它不会被删除或回收。

Parameters
recycler RecyclerView.Recycler: Recycler to use to recycle children

也可以看看:

removeAndRecycleView

void removeAndRecycleView (View child, 
                RecyclerView.Recycler recycler)

删除子视图并使用给定的Recycler回收它。

Parameters
child View: Child to remove and recycle
recycler RecyclerView.Recycler: Recycler to use to recycle child

removeAndRecycleViewAt

void removeAndRecycleViewAt (int index, 
                RecyclerView.Recycler recycler)

删除子视图并使用给定的Recycler回收它。

Parameters
index int: Index of child to remove and recycle
recycler RecyclerView.Recycler: Recycler to use to recycle child

removeCallbacks

boolean removeCallbacks (Runnable action)

从消息队列中删除指定的Runnable。

当LayoutManager未连接到RecyclerView时调用此方法不起作用。

Parameters
action Runnable: The Runnable to remove from the message handling queue
Returns
boolean true if RecyclerView could ask the Handler to remove the Runnable, false otherwise. When the returned value is true, the Runnable may or may not have been actually removed from the message queue (for instance, if the Runnable was not in the queue already.)

也可以看看:

removeDetachedView

void removeDetachedView (View child)

完成删除先前暂时为 detached的视图。

Parameters
child View: Detached child to remove

removeView

void removeView (View child)

如果需要,从当前连接的RecyclerView中移除一个视图。 LayoutManagers应该使用此方法来完全删除不再需要的子视图。 LayoutManagers应该强烈考虑使用recycleView(android.view.View)回收已移除的视图。

Parameters
child View: View to remove

removeViewAt

void removeViewAt (int index)

如果需要,从当前连接的RecyclerView中移除一个视图。 LayoutManagers应该使用此方法来完全删除不再需要的子视图。 LayoutManagers应该强烈考虑使用recycleView(android.view.View)回收已移除的视图。

Parameters
index int: Index of the child view to remove

requestChildRectangleOnScreen

boolean requestChildRectangleOnScreen (RecyclerView parent, 
                View child, 
                Rect rect, 
                boolean immediate)

当RecyclerView的一个孩子想要将一个特定的矩形定位到屏幕上时调用。 有关更多详细信息,请参阅requestChildRectangleOnScreen(android.view.View, android.graphics.Rect, boolean)

基本实现将尝试执行标准的程序化滚动,以在RecyclerView的填充区域内显示给定的矩形。

Parameters
parent RecyclerView
child View: The direct child making the request.
rect Rect: The rectangle in the child's coordinates the child wishes to be on the screen.
immediate boolean: True to forbid animated or delayed scrolling, false otherwise
Returns
boolean Whether the group scrolled to handle the operation

requestLayout

void requestLayout ()

在底层RecyclerView上调用 RecyclerView#requestLayout

requestSimpleAnimationsInNextLayout

void requestSimpleAnimationsInNextLayout ()

一个LayoutManager可以调用这个方法来强制RecyclerView在下一个布局过程中运行简单的动画,即使没有任何触发器这样做。 (例如,适配器数据更改)。

请注意,调用此方法并不能保证RecyclerView完全可以运行动画。 例如,如果没有任何RecyclerView.ItemAnimator集合,RecyclerView将不会运行任何动画,但在布局完成后仍然会清除此标志。

scrollHorizontallyBy

int scrollHorizontallyBy (int dx, 
                RecyclerView.Recycler recycler, 
                RecyclerView.State state)

以屏幕坐标中的dx像素水平滚动并返回行进的距离。 默认实现不做任何事情并返回0。

Parameters
dx int: distance to scroll by in pixels. X increases as scroll position approaches the right.
recycler RecyclerView.Recycler: Recycler to use for fetching potentially cached views for a position
state RecyclerView.State: Transient state of RecyclerView
Returns
int The actual distance scrolled. The return value will be negative if dx was negative and scrolling proceeeded in that direction. Math.abs(result) may be less than dx if a boundary was reached.

scrollToPosition

void scrollToPosition (int position)

滚动到指定的适配器位置。 该项目在屏幕上的实际位置取决于LayoutManager实施。

Parameters
position int: Scroll to this adapter position.

scrollVerticallyBy

int scrollVerticallyBy (int dy, 
                RecyclerView.Recycler recycler, 
                RecyclerView.State state)

在屏幕坐标中垂直滚动dy像素并返回行进的距离。 默认实现不做任何事情并返回0。

Parameters
dy int: distance to scroll in pixels. Y increases as scroll position approaches the bottom.
recycler RecyclerView.Recycler: Recycler to use for fetching potentially cached views for a position
state RecyclerView.State: Transient state of RecyclerView
Returns
int The actual distance scrolled. The return value will be negative if dy was negative and scrolling proceeeded in that direction. Math.abs(result) may be less than dy if a boundary was reached.

setAutoMeasureEnabled

void setAutoMeasureEnabled (boolean enabled)

定义布局是由RecyclerView测量,还是由LayoutManager想要处理布局测量本身。

这种方法通常LayoutManager调用与价值true ,如果要支持WRAP_CONTENT。 如果您使用的是公共LayoutManager,但想定制测量逻辑,则可以使用false调用此方法,并覆盖onMeasure(int, int)以实现您的自定义测量逻辑。

AutoMeasure是布局管理员轻松包装其内容或处理由RecyclerView的父级提供的各种规格的便捷机制。 它通过在onMeasure(int, int)呼叫期间致电onLayoutChildren(Recycler, State) ,然后根据儿童的位置计算所需的尺寸。 它支持RecyclerView的所有现有动画功能。

AutoMeasure的工作原理如下:

  1. LayoutManager should call setAutoMeasureEnabled(true) to enable it. All of the framework LayoutManagers use auto-measure.
  2. When onMeasure(int, int) is called, if the provided specs are exact, RecyclerView will only call LayoutManager's onMeasure and return without doing any layout calculation.
  3. If one of the layout specs is not EXACT, the RecyclerView will start the layout process in onMeasure call. It will process all pending Adapter updates and decide whether to run a predictive layout or not. If it decides to do so, it will first call onLayoutChildren(Recycler, State) with isPreLayout() set to true. At this stage, getWidth() and getHeight() will still return the width and height of the RecyclerView as of the last layout calculation.

    处理预测性案例后,RecyclerView将调用onLayoutChildren(Recycler, State)其中isMeasuring()设置为trueisPreLayout()设置为false LayoutManager的可以通过访问该测量规格getHeight()getHeightMode()getWidth()getWidthMode()

  4. After the layout calculation, RecyclerView sets the measured width & height by calculating the bounding box for the children (+ RecyclerView's padding). The LayoutManagers can override setMeasuredDimension(Rect, int, int) to choose different values. For instance, GridLayoutManager overrides this value to handle the case where if it is vertical and has 3 columns but only 2 items, it should still measure its width to fit 3 items, not 2.
  5. Any following on measure call to the RecyclerView will run onLayoutChildren(Recycler, State) with isMeasuring() set to true and isPreLayout() set to false. RecyclerView will take care of which views are actually added / removed / moved / changed for animations so that the LayoutManager should not worry about them and handle each onLayoutChildren(Recycler, State) call as if it is the last one.
  6. When measure is complete and RecyclerView's onLayout(boolean, int, int, int, int) method is called, RecyclerView checks whether it already did layout calculations during the measure pass and if so, it re-uses that information. It may still decide to call onLayoutChildren(Recycler, State) if the last measure spec was different from the final dimensions or adapter contents have changed between the measure call and the layout call.
  7. Finally, animations are calculated and run as usual.

Parameters
enabled boolean: True if the Layout should be measured by the RecyclerView, false if the LayoutManager wants to measure itself.

也可以看看:

setMeasuredDimension

void setMeasuredDimension (int widthSize, 
                int heightSize)

主机RecyclerView的 Set the measured dimensions

Parameters
widthSize int: Measured width
heightSize int: Measured height

setMeasuredDimension

void setMeasuredDimension (Rect childrenBounds, 
                int wSpec, 
                int hSpec)

设置儿童给定边界框的测量尺寸和传递到onMeasure(int, int)的测量规格。 它是在RecyclerView在测量过程中调用onLayoutChildren(Recycler, State)之后调用的。

该方法应该调用 setMeasuredDimension(int, int)

默认实现将RecyclerView的填充添加到给定的边界框,然后将该值限制在给定的测量规格内。

仅当LayoutManager选择进入自动测量API时才调用此方法。

Parameters
childrenBounds Rect: The bounding box of all children
wSpec int: The widthMeasureSpec that was passed into the RecyclerView.
hSpec int: The heightMeasureSpec that was passed into the RecyclerView.

也可以看看:

setMeasurementCacheEnabled

void setMeasurementCacheEnabled (boolean measurementCacheEnabled)

设置RecyclerView是否应该为孩子使用自己的测量缓存。 这是比框架使用更积极的缓存。

Parameters
measurementCacheEnabled boolean: True to enable the measurement cache, false otherwise.

也可以看看:

smoothScrollToPosition

void smoothScrollToPosition (RecyclerView recyclerView, 
                RecyclerView.State state, 
                int position)

平滑滚动到指定的适配器位置。

为了支持平滑滚动,请覆盖此方法,创建 RecyclerView.SmoothScroller实例并调用 startSmoothScroll(SmoothScroller)

Parameters
recyclerView RecyclerView: The RecyclerView to which this layout manager is attached
state RecyclerView.State: Current State of RecyclerView
position int: Scroll to this adapter position.

startSmoothScroll

void startSmoothScroll (RecyclerView.SmoothScroller smoothScroller)

使用提供的SmoothScroller开始平滑滚动。

调用此方法将取消任何先前的平滑滚动请求。

Parameters
smoothScroller RecyclerView.SmoothScroller: Unstance which defines how smooth scroll should be animated

stopIgnoringView

void stopIgnoringView (View view)

视图可以被废弃并再次回收。

请注意,调用此方法将删除视图持有者中的所有信息。

只有当您的LayoutManger处于onLayout或onScroll回调中时,才可以调用此方法。

Parameters
view View: View to ignore.

supportsPredictiveItemAnimations

boolean supportsPredictiveItemAnimations ()

返回此LayoutManager是否支持自动项目动画。 希望支持项目动画的LayoutManager应遵循onLayoutChildren(Recycler, State)列出的某些规则。 默认返回值是false ,因此LayoutManager的子类默认不会获得预测项目动画。

是否在RecyclerView中启用项目动画由此方法的返回值和RecyclerView本身上设置的ItemAnimator确定。 如果RecyclerView有一个非零的ItemAnimator,但此方法返回false,则将启用简单的项目动画,其中移动或移出屏幕的视图只是淡入/淡出。 如果RecyclerView有一个非null的ItemAnimator,并且此方法返回true,那么将会有两次调用onLayoutChildren(Recycler, State)来设置所需的信息,以更智能地预测出现和消失的视图应该从哪里开始动画。

Returns
boolean true if predictive item animations should be enabled, false otherwise

Hooray!