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
可用于实现一个标准的垂直滚动列表,一个统一的网格,交错网格,水平滚动收藏等等。 提供一些股票布局经理供一般使用。
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.
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) 仅在 |
void |
addDisappearingView(View child) 仅在 |
void |
addView(View child, int index) 如果需要,添加视图到当前连接的RecyclerView。 |
void |
addView(View child) 如果需要,添加视图到当前连接的RecyclerView。 |
void |
assertInLayoutOrScroll(String message) 检查RecyclerView是否在布局的中间或滚动,如果不是, 则抛出 |
void |
assertNotInLayoutOrScroll(String message) 检查RecyclerView是否位于布局的中间或滚动,如果 是 ,则抛出 |
void |
attachView(View child) 重新连接以前的 |
void |
attachView(View child, int index) 重新连接之前的 |
void |
attachView(View child, int index, RecyclerView.LayoutParams lp) 重新连接以前的 |
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) 分离子视图并将其添加到 |
void |
detachAndScrapViewAt(int index, RecyclerView.Recycler recycler) 分离子视图并将其添加到 |
void |
detachView(View child) 暂时分离子视图。 |
void |
detachViewAt(int index) 暂时分离子视图。 |
void |
endAnimation(View view) 结束由 |
View |
findContainingItemView(View view) 遍历给定视图的祖先,并返回包含它的项视图,也返回LayoutManager的直接子视图。 |
View |
findViewByPosition(int position) 查找代表给定适配器位置的视图。 |
abstract RecyclerView.LayoutParams |
generateDefaultLayoutParams() 为RecyclerView的子项创建一个默认的 |
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) |
boolean |
getClipToPadding() 检查RecyclerView是否配置为将子视图剪辑到其填充。 |
int |
getColumnCountForAccessibility(RecyclerView.Recycler recycler, RecyclerView.State state) 返回可访问性的列数。 |
int |
getDecoratedBottom(View child) 返回其父级中给定子视图的底部边缘,由应用的任何 |
void |
getDecoratedBoundsWithMargins(View view, Rect outBounds) 返回视图的边界,包括其装饰和边距。 |
int |
getDecoratedLeft(View child) 返回其父级中给定子视图的左边缘,由应用的任何 |
int |
getDecoratedMeasuredHeight(View child) 返回给定孩子的测量身高,加上由 |
int |
getDecoratedMeasuredWidth(View child) 返回给定孩子的测量宽度,加上由 |
int |
getDecoratedRight(View child) 返回其父级中给定子视图的右边缘,由应用的任何 |
int |
getDecoratedTop(View child) 返回其父级中给定子视图的上边缘,由应用的任何 |
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) 使用包含任何当前的 |
void |
layoutDecoratedWithMargins(View child, int left, int top, int right, int bottom) 使用包含任何当前 |
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) |
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有机会在使用默认行为 |
void |
onItemsAdded(RecyclerView recyclerView, int positionStart, int itemCount) 当项目已添加到适配器时调用。 |
void |
onItemsChanged(RecyclerView recyclerView) 在 |
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) 此方法已弃用。 使用 |
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) 完成删除先前暂时为 |
void |
removeView(View child) 如果需要,从当前连接的RecyclerView中移除一个视图。 |
void |
removeViewAt(int index) 如果需要,从当前连接的RecyclerView中移除一个视图。 |
boolean |
requestChildRectangleOnScreen(RecyclerView parent, View child, Rect rect, boolean immediate) 当RecyclerView的一个孩子想要将一个特定的矩形定位到屏幕上时调用。 |
void |
requestLayout() 在底层RecyclerView上调用 |
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的 |
void |
setMeasuredDimension(Rect childrenBounds, int wSpec, int hSpec) 设置儿童给定边界框的测量尺寸和传递到 |
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
|
相关方法:
相关方法:
相关方法:
相关方法:
RecyclerView.LayoutManager ()
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. |
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. |
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 |
void addView (View child)
如果需要,添加视图到当前连接的RecyclerView。 LayoutManagers应使用此方法添加从RecyclerView.Recycler
使用getViewForPosition(int)
获取的getViewForPosition(int)
。
Parameters | |
---|---|
child |
View : View to add |
void assertInLayoutOrScroll (String message)
检查RecyclerView是否位于布局的中间或滚动,如果不是, 则抛出 IllegalStateException
。
Parameters | |
---|---|
message |
String : The message for the exception. Can be null. |
void assertNotInLayoutOrScroll (String message)
检查RecyclerView是否在布局的中间或滚动,如果 是 ,则抛出 IllegalStateException
。
Parameters | |
---|---|
message |
String : The message for the exception. Can be null. |
void attachView (View child)
重新连接之前的detached
视图。 不应该使用此方法重新附加以前detachAndScrapView(android.view.View, RecyclerView.Recycler)
报废的视图}。
Parameters | |
---|---|
child |
View : Child to reattach |
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 |
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 |
void calculateItemDecorationsForChild (View child, Rect outRect)
计算应用于给定子项的项目装饰插页,并使用插入值更新提供的Rect实例。
请注意,当调用LayoutManager的度量子方法之一时,会自动计算项目装饰。 如果您需要通过measure(int, int)
来测量具有自定义规格的儿童,则可以使用此方法获得装饰。
Parameters | |
---|---|
child |
View : The child view whose decorations should be calculated |
outRect |
Rect : The Rect to hold result values |
boolean canScrollHorizontally ()
查询当前是否支持水平滚动。 默认实现返回false。
Returns | |
---|---|
boolean |
True if this LayoutManager can scroll the current contents horizontally |
boolean canScrollVertically ()
查询当前是否支持垂直滚动。 默认实现返回false。
Returns | |
---|---|
boolean |
True if this LayoutManager can scroll the current contents vertically |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
也可以看看:
void detachAndScrapAttachedViews (RecyclerView.Recycler recycler)
临时分离并取消所有当前连接的子视图。 视图将被废弃到给定的Recycler中。 回收站可能更喜欢在先前回收的其他视图之前重新使用废料视图。
Parameters | |
---|---|
recycler |
RecyclerView.Recycler : Recycler to scrap views into |
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 |
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 |
void detachView (View child)
暂时分离子视图。
LayoutManagers可能希望执行轻量级的分离操作来重新排列当前连接到RecyclerView的视图。 通常,LayoutManager实现将要使用detachAndScrapView(android.view.View, RecyclerView.Recycler)
以便分离的视图可以被反弹并重新使用。
如果LayoutManager使用此方法分离视图,则在由RecyclerView调用的LayoutManager入口点方法返回之前, 必须使用 reattach
或 fully remove
分离的视图。
Parameters | |
---|---|
child |
View : Child to detach |
void detachViewAt (int index)
暂时分离子视图。
LayoutManagers可能希望执行轻量级的分离操作来重新排列当前连接到RecyclerView的视图。 通常,LayoutManager实现将希望使用detachAndScrapView(android.view.View, RecyclerView.Recycler)
以便分离的视图可以被反弹并重新使用。
如果LayoutManager使用此方法分离视图,则在由RecyclerView调用的LayoutManager入口点方法返回之前, 必须使用 reattach
或 fully remove
分离的视图。
Parameters | |
---|---|
index |
int : Index of the child to detach |
void endAnimation (View view)
结束由 RecyclerView.ItemAnimator
创建的视图上的所有动画。
Parameters | |
---|---|
view |
View : The View for which the animations should be ended. |
也可以看看:
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. |
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 |
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 |
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 |
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 |
int getBaseline ()
RecyclerView的文本基线从顶部边界返回偏移量。
Returns | |
---|---|
int |
The offset of the RecyclerView's text baseline from the its top boundary; -1 if there is no baseline. |
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. |
View getChildAt (int index)
返回给定索引处的子视图
Parameters | |
---|---|
index |
int : Index of child to return |
Returns | |
---|---|
View |
Child view at index |
int getChildCount ()
返回附加到父RecyclerView的当前子视图数。 这不包括临时分离和/或报废的子视图。
Returns | |
---|---|
int |
Number of attached children |
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 |
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 |
boolean getClipToPadding ()
检查RecyclerView是否配置为将子视图剪辑到其填充。
Returns | |
---|---|
boolean |
true if this RecyclerView clips children to its padding, false otherwise |
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. |
int getDecoratedBottom (View child)
返回其父级中给定子视图的底部边缘,由应用的任何 ItemDecorations
偏移。
Parameters | |
---|---|
child |
View : Child to query |
Returns | |
---|---|
int |
Child bottom edge with offsets applied |
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. |
int getDecoratedLeft (View child)
返回其父级中给定子视图的左边缘,由应用的任何 ItemDecorations
偏移。
Parameters | |
---|---|
child |
View : Child to query |
Returns | |
---|---|
int |
Child left edge with offsets applied |
也可以看看:
int getDecoratedMeasuredHeight (View child)
返回给定孩子的测量身高,加上由 ItemDecorations
应用的任何插入物的额外尺寸。
Parameters | |
---|---|
child |
View : Child view to query |
Returns | |
---|---|
int |
child's measured height plus ItemDecoration insets |
也可以看看:
int getDecoratedMeasuredWidth (View child)
返回给定孩子的测量宽度,加上由 ItemDecorations
应用的任何插入的额外尺寸。
Parameters | |
---|---|
child |
View : Child view to query |
Returns | |
---|---|
int |
child's measured width plus ItemDecoration insets |
也可以看看:
int getDecoratedRight (View child)
返回其父级中给定子视图的右边缘,由应用的任何 ItemDecorations
。
Parameters | |
---|---|
child |
View : Child to query |
Returns | |
---|---|
int |
Child right edge with offsets applied |
int getDecoratedTop (View child)
返回其父级中给定子视图的上边缘,由任何应用的 ItemDecorations
。
Parameters | |
---|---|
child |
View : Child to query |
Returns | |
---|---|
int |
Child top edge with offsets applied |
也可以看看:
View getFocusedChild ()
返回包含焦点的项目视图。
Returns | |
---|---|
View |
A direct child of RecyclerView which has focus or contains the focused child. |
int getHeight ()
返回父RecyclerView的高度
Returns | |
---|---|
int |
Height in pixels |
int getHeightMode ()
返回RecyclerView的高度测量规格模式。
仅当LayoutManager通过 setAutoMeasureEnabled(boolean)
选择自动测量api时才设置此值。
当RecyclerView运行布局时,即使使用不同的规格模式测量,此值也始终设置为 EXACTLY
。
Returns | |
---|---|
int |
Height measure spec mode. |
也可以看看:
int getItemCount ()
返回绑定到父RecyclerView的适配器中的项目数。
请注意,这个数字不一定等于getItemCount()
。 在状态可用的方法中,应该使用getItemCount()
。 有关更多详细信息,请检查文档getItemCount()
。
Returns | |
---|---|
int |
The number of items in the bound adapter |
也可以看看:
int getItemViewType (View view)
返回由适配器定义的视图类型。
Parameters | |
---|---|
view |
View : The view to query |
Returns | |
---|---|
int |
The type of the view assigned by the adapter. |
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. |
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. |
int getPaddingBottom ()
返回父RecyclerView的底部填充
Returns | |
---|---|
int |
Padding in pixels |
int getPaddingEnd ()
返回父RecyclerView的结束填充
Returns | |
---|---|
int |
Padding in pixels |
int getPaddingLeft ()
返回父RecyclerView的左侧填充
Returns | |
---|---|
int |
Padding in pixels |
int getPaddingRight ()
返回父级RecyclerView的正确填充
Returns | |
---|---|
int |
Padding in pixels |
int getPaddingStart ()
返回父RecyclerView的开始填充
Returns | |
---|---|
int |
Padding in pixels |
int getPaddingTop ()
返回父级RecyclerView的顶部填充
Returns | |
---|---|
int |
Padding in pixels |
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. |
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. |
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. |
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. |
int getSelectionModeForAccessibility (RecyclerView.Recycler recycler, RecyclerView.State state)
返回可访问性的选择模式。 应该是SELECTION_MODE_NONE
, SELECTION_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 . |
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. |
void getTransformedBoundingBox (View child, boolean includeDecorInsets, Rect out)
计算视图的边界框,同时考虑其关于RecyclerView的矩阵变化(平移,缩放等)。
如果 includeDecorInsets
是 true
,则在应用视图矩阵之前先应用它们,以便装饰偏移也经历相同的变换。
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. |
int getWidth ()
返回父RecyclerView的宽度
Returns | |
---|---|
int |
Width in pixels |
int getWidthMode ()
返回RecyclerView的宽度测量规格模式。
仅当LayoutManager通过 setAutoMeasureEnabled(boolean)
选择自动测量api时才设置此值。
RecyclerView正在运行布局时,即使使用不同的规格模式测量,此值也始终设置为 EXACTLY
。
Returns | |
---|---|
int |
Width measure spec mode. |
也可以看看:
boolean hasFocus ()
如果此LayoutManager绑定的RecyclerView具有或包含焦点,则返回true。
Returns | |
---|---|
boolean |
true if the RecyclerView has or contains focus |
也可以看看:
void ignoreView (View view)
标记一个视图,以便它不会被废弃或回收。
忽略孩子的范围严格限于位置跟踪,报废和再循环。 诸如removeAndRecycleAllViews(Recycler)
方法将忽略孩子,而removeAllViews()
或offsetChildrenHorizontal(int)
不会忽略孩子。
在此孩子可以再次回收之前,您必须致电 stopIgnoringView(View)
。
只有当您的LayoutManger处于onLayout或onScroll回调中时,才可以调用此方法。
Parameters | |
---|---|
view |
View : View to ignore. |
也可以看看:
boolean isAttachedToWindow ()
返回LayoutManager当前是否连接到附加到窗口的RecyclerView。
Returns | |
---|---|
boolean |
True if this LayoutManager is controlling a RecyclerView and the RecyclerView is attached to window. |
boolean isAutoMeasureEnabled ()
返回LayoutManager是否使用自动测量API。
Returns | |
---|---|
boolean |
True if the LayoutManager is measured by the RecyclerView or false if it measures itself. |
boolean isFocused ()
如果此布局管理器的RecyclerView绑定到焦点,则返回true。
Returns | |
---|---|
boolean |
True if the RecyclerView has focus, false otherwise. |
也可以看看:
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. |
boolean isMeasurementCacheEnabled ()
除了View Framework的测量高速缓存外,RecyclerView还为子项使用自己的附加测量高速缓存,以避免在不必要时重新测量它们。 它默认开启,但可以通过setMeasurementCacheEnabled(boolean)
关闭。
Returns | |
---|---|
boolean |
True if measurement cache is enabled, false otherwise. |
boolean isSmoothScrolling ()
Returns | |
---|---|
boolean |
true if RecycylerView is currently in the state of smooth scrolling. |
void layoutDecorated (View child, int left, int top, int right, int bottom)
使用包含任何当前的 ItemDecorations
坐标在RecyclerView中布置给定的子视图。
布局管理员应尽可能使用包含物品装饰插图的尺寸和坐标。 这允许LayoutManager有效地忽略测量和布局代码中的装饰插入。 请参阅以下方法:
layoutDecoratedWithMargins(View, int, int, int, int)
getDecoratedBoundsWithMargins(View, Rect)
measureChild(View, int, int)
measureChildWithMargins(View, int, int)
getDecoratedLeft(View)
getDecoratedTop(View)
getDecoratedRight(View)
getDecoratedBottom(View)
getDecoratedMeasuredWidth(View)
getDecoratedMeasuredHeight(View)
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 |
void layoutDecoratedWithMargins (View child, int left, int top, int right, int bottom)
使用包含任何当前 ItemDecorations
和边距的坐标在RecyclerView内布置给定的子视图。
布局管理员应尽可能使用包含物品装饰插图的尺寸和坐标。 这允许LayoutManager有效地忽略测量和布局代码中的装饰插入。 请参阅以下方法:
layoutDecorated(View, int, int, int, int)
measureChild(View, int, int)
measureChildWithMargins(View, int, int)
getDecoratedLeft(View)
getDecoratedTop(View)
getDecoratedRight(View)
getDecoratedBottom(View)
getDecoratedMeasuredWidth(View)
getDecoratedMeasuredHeight(View)
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 |
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 |
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 |
void moveView (int fromIndex, int toIndex)
将View从一个位置移动到另一个位置。
Parameters | |
---|---|
fromIndex |
int : The View's initial index |
toIndex |
int : The View's target index |
void offsetChildrenHorizontal (int dx)
沿水平轴偏移附加到父RecyclerView的所有子视图dx个像素。
Parameters | |
---|---|
dx |
int : Pixels to offset by |
void offsetChildrenVertical (int dy)
沿垂直轴偏移由dy像素附加到父级RecyclerView的所有子视图。
Parameters | |
---|---|
dy |
int : Pixels to offset by |
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 . |
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. |
void onAttachedToWindow (RecyclerView view)
当此LayoutManager同时附加到RecyclerView并且RecyclerView附加到窗口时调用。
如果RecyclerView重新连接了相同的LayoutManager和Adapter,则它可能不会调用 onLayoutChildren(Recycler, State)
如果没有更改,并且RecyclerView在分离时没有请求布局。
子类实现应该始终调用超类的实现。
Parameters | |
---|---|
view |
RecyclerView : The RecyclerView this LayoutManager is bound to |
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. |
void onDetachedFromWindow (RecyclerView view)
此方法已弃用。
覆盖onDetachedFromWindow(RecyclerView, Recycler)
Parameters | |
---|---|
view |
RecyclerView
|
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 |
void onInitializeAccessibilityEvent (AccessibilityEvent event)
Parameters | |
---|---|
event |
AccessibilityEvent
|
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 |
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 |
也可以看看:
onInitializeAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo)
getRowCountForAccessibility(RecyclerView.Recycler, RecyclerView.State)
getColumnCountForAccessibility(RecyclerView.Recycler, RecyclerView.State)
isLayoutHierarchical(RecyclerView.Recycler, RecyclerView.State)
getSelectionModeForAccessibility(RecyclerView.Recycler, RecyclerView.State)
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 |
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. |
void onItemsAdded (RecyclerView recyclerView, int positionStart, int itemCount)
当项目已添加到适配器时调用。 如果插入的项目需要刷新当前可见的一组子视图,则LayoutManager可以选择requestLayout。 (例如,当前空白空间将由附加项目填充等)
void onItemsChanged (RecyclerView recyclerView)
在 notifyDataSetChanged()
被触发时调用,而不是提供有关实际更改内容的详细信息。
void onItemsMoved (RecyclerView recyclerView, int from, int to, int itemCount)
在使用适配器移动项目时调用。
请注意,一个项目也可能会改变位置以响应另一个ADD / REMOVE / MOVE操作。 此回调仅在调用notifyItemMoved(int, int)
调用。
void onItemsRemoved (RecyclerView recyclerView, int positionStart, int itemCount)
当从适配器中移除项目时调用。
void onItemsUpdated (RecyclerView recyclerView, int positionStart, int itemCount)
在适配器中更改了项目时调用。 要接收有效负载, onItemsUpdated(RecyclerView, int, int, Object)
改为onItemsUpdated(RecyclerView, int, int, Object)
,那么此回调将不会被调用。
void onItemsUpdated (RecyclerView recyclerView, int positionStart, int itemCount, Object payload)
当适配器和可选有效载荷中的项目已更改时调用。 默认实现调用onItemsUpdated(RecyclerView, int, int)
。
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 |
void onLayoutCompleted (RecyclerView.State state)
完整布局计算完成后调用。 由于动画或布局测量,布局计算可能包含多个onLayoutChildren(Recycler, State)
通话,但它只包含一个onLayoutCompleted(State)
通话。 该方法将在layout(int, int, int, int)
调用结束时调用。
这是LayoutManager做一些清理的好地方,例如待处理的滚动位置,保存的状态等。
Parameters | |
---|---|
state |
RecyclerView.State : Transient state of RecyclerView |
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 |
boolean onRequestChildFocus (RecyclerView parent, View child, View focused)
此方法已弃用。
使用onRequestChildFocus(RecyclerView, State, View, View)
Parameters | |
---|---|
parent |
RecyclerView
|
child |
View
|
focused |
View
|
Returns | |
---|---|
boolean |
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 |
Parcelable onSaveInstanceState ()
当LayoutManager保存其状态时调用。 如果重新创建LayoutManager,这是保存滚动位置,配置和恢复相同布局状态所需的其他任何东西的好时机。
RecyclerView不会验证LayoutManager是否在状态保存和恢复之间更改。 这可以让你在你的布局管理器之间共享信息,但它也是你的责任,确保他们使用相同的可分类。
Returns | |
---|---|
Parcelable |
Necessary information for LayoutManager to be able to restore its state |
void onScrollStateChanged (int state)
RecyclerView调用此方法来通知LayoutManager滚动状态已更改。
Parameters | |
---|---|
state |
int : The new scroll state for RecyclerView |
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 |
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 |
void postOnAnimation (Runnable action)
使Runnable在下一个动画时间步骤上执行。 runnable将在用户界面线程上运行。
当LayoutManager未连接到RecyclerView时调用此方法不起作用。
Parameters | |
---|---|
action |
Runnable : The Runnable that will be executed. |
也可以看看:
void removeAllViews ()
从当前连接的RecyclerView中删除所有视图。 这不会回收任何受影响的视图; 如果需要,LayoutManager负责这样做。
void removeAndRecycleAllViews (RecyclerView.Recycler recycler)
删除所有视图并使用给定的回收站回收它们。
如果你想清理缓存的视图,你也应该调用 clear()
。
如果一个视图被标记为“忽略”,它不会被删除或回收。
Parameters | |
---|---|
recycler |
RecyclerView.Recycler : Recycler to use to recycle children |
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 |
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 |
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.) |
也可以看看:
void removeDetachedView (View child)
完成删除先前暂时为 detached
的视图。
Parameters | |
---|---|
child |
View : Detached child to remove |
void removeView (View child)
如果需要,从当前连接的RecyclerView中移除一个视图。 LayoutManagers应该使用此方法来完全删除不再需要的子视图。 LayoutManagers应该强烈考虑使用recycleView(android.view.View)
回收已移除的视图。
Parameters | |
---|---|
child |
View : View to remove |
void removeViewAt (int index)
如果需要,从当前连接的RecyclerView中移除一个视图。 LayoutManagers应该使用此方法来完全删除不再需要的子视图。 LayoutManagers应该强烈考虑使用recycleView(android.view.View)
回收已移除的视图。
Parameters | |
---|---|
index |
int : Index of the child view to remove |
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 |
void requestLayout ()
在底层RecyclerView上调用 RecyclerView#requestLayout
void requestSimpleAnimationsInNextLayout ()
一个LayoutManager可以调用这个方法来强制RecyclerView在下一个布局过程中运行简单的动画,即使没有任何触发器这样做。 (例如,适配器数据更改)。
请注意,调用此方法并不能保证RecyclerView完全可以运行动画。 例如,如果没有任何RecyclerView.ItemAnimator
集合,RecyclerView将不会运行任何动画,但在布局完成后仍然会清除此标志。
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. |
void scrollToPosition (int position)
滚动到指定的适配器位置。 该项目在屏幕上的实际位置取决于LayoutManager实施。
Parameters | |
---|---|
position |
int : Scroll to this adapter position. |
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. |
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的工作原理如下:
setAutoMeasureEnabled(true)
to enable it. All of the framework LayoutManagers use auto-measure
.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.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()
设置为true
和isPreLayout()
设置为false
。 LayoutManager的可以通过访问该测量规格getHeight()
, getHeightMode()
, getWidth()
和getWidthMode()
。
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.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. 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.Parameters | |
---|---|
enabled |
boolean : True if the Layout should be measured by the RecyclerView, false if the LayoutManager wants to measure itself. |
void setMeasuredDimension (int widthSize, int heightSize)
主机RecyclerView的 Set the measured dimensions
。
Parameters | |
---|---|
widthSize |
int : Measured width |
heightSize |
int : Measured height |
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. |
void setMeasurementCacheEnabled (boolean measurementCacheEnabled)
设置RecyclerView是否应该为孩子使用自己的测量缓存。 这是比框架使用更积极的缓存。
Parameters | |
---|---|
measurementCacheEnabled |
boolean : True to enable the measurement cache, false otherwise. |
也可以看看:
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. |
void startSmoothScroll (RecyclerView.SmoothScroller smoothScroller)
使用提供的SmoothScroller开始平滑滚动。
调用此方法将取消任何先前的平滑滚动请求。
Parameters | |
---|---|
smoothScroller |
RecyclerView.SmoothScroller : Unstance which defines how smooth scroll should be animated |
void stopIgnoringView (View view)
视图可以被废弃并再次回收。
请注意,调用此方法将删除视图持有者中的所有信息。
只有当您的LayoutManger处于onLayout或onScroll回调中时,才可以调用此方法。
Parameters | |
---|---|
view |
View : View to ignore. |
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 |