Most visited

Recently visited

LinearLayoutManager

public class LinearLayoutManager
extends RecyclerView.LayoutManager implements ItemTouchHelper.ViewDropHandler

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


RecyclerView.LayoutManager实现提供与 ListView类似的功能。

Summary

Nested classes

class LinearLayoutManager.LayoutChunkResult

 

XML attributes

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

Inherited XML attributes

From class android.support.v7.widget.RecyclerView.LayoutManager

Constants

int HORIZONTAL

int INVALID_OFFSET

int VERTICAL

Public constructors

LinearLayoutManager(Context context)

创建一个垂直的LinearLayoutManager

LinearLayoutManager(Context context, int orientation, boolean reverseLayout)
LinearLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)

当布局管理器由RecyclerView属性“layoutManager”设置为XML时使用的构造器。

Public methods

void assertNotInLayoutOrScroll(String message)

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

boolean canScrollHorizontally()

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

boolean canScrollVertically()

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

int computeHorizontalScrollExtent(RecyclerView.State state)

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

int computeHorizontalScrollOffset(RecyclerView.State state)

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

int computeHorizontalScrollRange(RecyclerView.State state)

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

PointF computeScrollVectorForPosition(int targetPosition)
int computeVerticalScrollExtent(RecyclerView.State state)

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

int computeVerticalScrollOffset(RecyclerView.State state)

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

int computeVerticalScrollRange(RecyclerView.State state)

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

int findFirstCompletelyVisibleItemPosition()

返回第一个完全可见视图的适配器位置。

int findFirstVisibleItemPosition()

返回第一个可见视图的适配器位置。

int findLastCompletelyVisibleItemPosition()

返回最后一个完全可见视图的适配器位置。

int findLastVisibleItemPosition()

返回最后一个可见视图的适配器位置。

View findViewByPosition(int position)

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

RecyclerView.LayoutParams generateDefaultLayoutParams()

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

int getOrientation()

返回布局的当前方向。

boolean getRecycleChildrenOnDetach()

返回LayoutManager是否将从RecyclerView中分离时回收它的子项。

boolean getReverseLayout()

如果视图从布局的相反方向布置,则返回。

boolean getStackFromEnd()
boolean isSmoothScrollbarEnabled()

返回平滑滚动条功能的当前状态。

void onDetachedFromWindow(RecyclerView view, RecyclerView.Recycler recycler)

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

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

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

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

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

void onLayoutCompleted(RecyclerView.State state)

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

void onRestoreInstanceState(Parcelable state)
Parcelable onSaveInstanceState()

当LayoutManager保存其状态时调用。

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

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

void scrollToPosition(int position)

滚动RecyclerView以使位置可见。

void scrollToPositionWithOffset(int position, int offset)

使用已解析的版面开始的给定偏移量滚动到指定的适配器位置。

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

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

void setOrientation(int orientation)

设置布局的方向。

void setRecycleChildrenOnDetach(boolean recycleChildrenOnDetach)

设置当它从RecyclerView分离时,LayoutManager是否会回收它的子项。

void setReverseLayout(boolean reverseLayout)

用于反转项目遍历和布局顺序。

void setSmoothScrollbarEnabled(boolean enabled)

当启用平滑滚动条时,滚动条缩略图的位置和大小将根据可见项目中可见像素的数量进行计算。

void setStackFromEnd(boolean stackFromEnd)

兼容性支持 setStackFromBottom(boolean)

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

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

boolean supportsPredictiveItemAnimations()

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

Protected methods

int getExtraLayoutSpace(RecyclerView.State state)

返回布局管理器应布置的额外空间量。

boolean isLayoutRTL()

Inherited methods

From class android.support.v7.widget.RecyclerView.LayoutManager
From class java.lang.Object
From interface android.support.v7.widget.helper.ItemTouchHelper.ViewDropHandler

XML attributes

android.support.v7.recyclerview:reverseLayout

相关方法:

android.support.v7.recyclerview:stackFromEnd

相关方法:

android:orientation

相关方法:

Constants

HORIZONTAL

int HORIZONTAL

常量值:0(0x00000000)

INVALID_OFFSET

int INVALID_OFFSET

常量值:-2147483648(0x80000000)

VERTICAL

int VERTICAL

常数值:1(0x00000001)

Public constructors

LinearLayoutManager

LinearLayoutManager (Context context)

创建一个垂直的LinearLayoutManager

Parameters
context Context: Current context, will be used to access resources.

LinearLayoutManager

LinearLayoutManager (Context context, 
                int orientation, 
                boolean reverseLayout)

Parameters
context Context: Current context, will be used to access resources.
orientation int: Layout orientation. Should be HORIZONTAL or VERTICAL.
reverseLayout boolean: When set to true, layouts from end to start.

LinearLayoutManager

LinearLayoutManager (Context context, 
                AttributeSet attrs, 
                int defStyleAttr, 
                int defStyleRes)

当布局管理器由RecyclerView属性“layoutManager”设置为XML时使用的构造器。 默认为垂直方向。

相关XML属性:

Parameters
context Context
attrs AttributeSet
defStyleAttr int
defStyleRes int

Public methods

assertNotInLayoutOrScroll

void assertNotInLayoutOrScroll (String message)

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

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

canScrollHorizontally

boolean canScrollHorizontally ()

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

Returns
boolean true if getOrientation() is HORIZONTAL

canScrollVertically

boolean canScrollVertically ()

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

Returns
boolean true if getOrientation() is VERTICAL

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

computeScrollVectorForPosition

PointF computeScrollVectorForPosition (int targetPosition)

Parameters
targetPosition int
Returns
PointF

computeVerticalScrollExtent

int computeVerticalScrollExtent (RecyclerView.State state)

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

详情请阅读 computeVerticalScrollExtent()

默认实现返回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

findFirstCompletelyVisibleItemPosition

int findFirstCompletelyVisibleItemPosition ()

返回第一个完全可见视图的适配器位置。 此位置不包括在上次布局传递后分派的适配器更改。

请注意,边界检查仅在当前方向上执行。 这意味着,如果LayoutManager是水平的,它只会检查视图的左右边缘。

Returns
int The adapter position of the first fully visible item or NO_POSITION if there aren't any visible items.

也可以看看:

findFirstVisibleItemPosition

int findFirstVisibleItemPosition ()

返回第一个可见视图的适配器位置。 此位置不包括在上次布局传递后分派的适配器更改。

请注意,此值不受布局方向或项目顺序遍历的影响。 setReverseLayout(boolean) )。 视图按其在适配器中的位置排序,而不是在布局中排序。

如果RecyclerView具有项目装饰器,它们也将在计算中考虑。

LayoutManager可以预先缓存一些不一定可见的视图。 这些视图在这种方法中被忽略。

Returns
int The adapter position of the first visible item or NO_POSITION if there aren't any visible items.

也可以看看:

findLastCompletelyVisibleItemPosition

int findLastCompletelyVisibleItemPosition ()

返回最后一个完全可见视图的适配器位置。 此位置不包括在上次布局传递后分派的适配器更改。

请注意,边界检查仅在当前方向上执行。 这意味着,如果LayoutManager是水平的,它只会检查视图的左右边缘。

Returns
int The adapter position of the last fully visible view or NO_POSITION if there aren't any visible items.

也可以看看:

findLastVisibleItemPosition

int findLastVisibleItemPosition ()

返回最后一个可见视图的适配器位置。 此位置不包括在上次布局传递后分派的适配器更改。

请注意,此值不受布局方向或项目顺序遍历的影响。 setReverseLayout(boolean) )。 视图按其在适配器中的位置排序,而不是在布局中排序。

如果RecyclerView具有项目装饰器,它们也将在计算中考虑。

LayoutManager可以预先缓存一些不一定可见的视图。 这些视图在这种方法中被忽略。

Returns
int The adapter position of the last visible view or NO_POSITION if there aren't any visible items.

也可以看看:

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

getOrientation

int getOrientation ()

返回布局的当前方向。

Returns
int Current orientation, either HORIZONTAL or VERTICAL

也可以看看:

getRecycleChildrenOnDetach

boolean getRecycleChildrenOnDetach ()

返回LayoutManager是否将从RecyclerView中分离时回收它的子项。

Returns
boolean true if LayoutManager will recycle its children when it is detached from RecyclerView.

getReverseLayout

boolean getReverseLayout ()

如果视图从布局的相反方向布置,则返回。

Returns
boolean If layout is reversed or not.

也可以看看:

getStackFromEnd

boolean getStackFromEnd ()

Returns
boolean

isSmoothScrollbarEnabled

boolean isSmoothScrollbarEnabled ()

返回平滑滚动条功能的当前状态。 它是默认启用的。

Returns
boolean True if smooth scrollbar is enabled, false otherwise.

也可以看看:

onDetachedFromWindow

void onDetachedFromWindow (RecyclerView view, 
                RecyclerView.Recycler recycler)

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

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

如果RecyclerView用同一个LayoutManager和Adapter重新连接,如果没有任何变化,并且RecyclerView在分离时没有请求布局,它可能不会调用 onLayoutChildren(Recycler, State)

如果您的LayoutManager具有在分离时清理的View引用,则它还应该调用 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.

onFocusSearchFailed

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

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

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

Parameters
focused View: The currently focused view
focusDirection 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

onLayoutChildren

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

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

LayoutManager需要更好的项目动画体验,其中项目可以根据项目在不在屏幕上时存在的位置在屏幕上和屏幕之外进行动画显示,然后LayoutManager应从supportsPredictiveItemAnimations()返回true,并将其他逻辑添加到onLayoutChildren(Recycler, State) 支持预测动画意味着onLayoutChildren(Recycler, State)将被调用两次; 一次是作为“预先”布局步骤,以确定项目在真实布局之前的位置,并再次执行“真实”布局。 在预先布置阶段,项目会记住他们的布局前位置,以便适当地布置它们。 此外,还将从废料中返回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)调用的结尾layout(int, int, int, int)调用。

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

Parameters
state RecyclerView.State: Transient state of RecyclerView

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

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)

滚动RecyclerView以使位置可见。

RecyclerView将滚动显示目标位置所需的最小量。 如果您正在寻找与setSelection(int)setSelectionFromTop(int, int)类似的行为,请使用scrollToPositionWithOffset(int, int)

请注意,直到下一次布局调用时才会反映滚动位置更改。

Parameters
position int: Scroll to this adapter position

也可以看看:

scrollToPositionWithOffset

void scrollToPositionWithOffset (int position, 
                int offset)

使用已解析的版面开始的给定偏移量滚动到指定的适配器位置。 解决布局开始依赖于getReverseLayout()getLayoutDirection(android.view.View)getStackFromEnd()

例如,如果布局为 VERTICALgetStackFromEnd()为真,则调用 scrollToPositionWithOffset(10, 20)将布局为 item[10]的底部比RecyclerView的底部高20个像素。

请注意,直到下一次布局调用时才会反映滚动位置更改。

如果您只是想让位置可见,请使用 scrollToPosition(int)

Parameters
position int: Index (starting at 0) of the reference item.
offset int: The distance (in pixels) between the start edge of the item view and start edge of the RecyclerView.

也可以看看:

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.

setOrientation

void setOrientation (int orientation)

设置布局的方向。 LinearLayoutManager将尽最大努力保持滚动位置。

Parameters
orientation int: HORIZONTAL or VERTICAL

setRecycleChildrenOnDetach

void setRecycleChildrenOnDetach (boolean recycleChildrenOnDetach)

设置当它从RecyclerView分离时,LayoutManager是否会回收它的子项。

如果您使用的是 RecyclerView.RecycledViewPool ,则将此标志设置为 true可能是个好主意,以便视图可以立即与其他RecyclerView进行 true

请注意,如果RecyclerView恢复,设置此标志将导致性能下降。

Parameters
recycleChildrenOnDetach boolean: Whether children should be recycled in detach or not.

setReverseLayout

void setReverseLayout (boolean reverseLayout)

用于反转项目遍历和布局顺序。 这与RTL视图的布局更改类似。 设置为true时,第一项布置在UI的末尾,第二项布置在它之前等。对于水平布局,它取决于布局方向。 当设置为true时,如果RecyclerView是LTR,那么它将从RTL布局,如果RecyclerView }是RTL,它将从LTR进行布局。 如果您正在寻找setStackFromBottom(boolean)的完全相同的行为,请使用setStackFromEnd(boolean)

Parameters
reverseLayout boolean

setSmoothScrollbarEnabled

void setSmoothScrollbarEnabled (boolean enabled)

当启用平滑滚动条时,滚动条缩略图的位置和大小将根据可见项目中可见像素的数量进行计算。 然而,这假定所有列表项具有相似或相等的宽度或高度(取决于列表方向)。 如果使用项目具有不同尺寸的列表,则滚动条将在用户滚动列表时更改外观。 为了避免这个问题,你需要禁用这个属性。 当平滑滚动条被禁用时,滚动条缩略图的位置和大小仅基于适配器中的项目数量和适配器内可见项目的位置。 这提供了一个稳定的滚动条,因为用户在不同宽度/高度的项目列表中导航。

Parameters
enabled boolean: Whether or not to enable smooth scrollbar.

也可以看看:

setStackFromEnd

void setStackFromEnd (boolean stackFromEnd)

兼容性支持 setStackFromBottom(boolean)

Parameters
stackFromEnd boolean

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.

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

Protected methods

getExtraLayoutSpace

int getExtraLayoutSpace (RecyclerView.State state)

返回布局管理器应布置的额外空间量。 默认情况下, LinearLayoutManager在平滑滚动时放置1个额外页面的项目,否则为0。 您可以重写此方法来实现您的自定义布局预缓存逻辑。

布置隐形元素最终将伴随性能成本。 另一方面,在像平滑滚动到未知位置这样的地方,这些额外的内容有助于LayoutManager计算更平滑的滚动; 这改善了用户体验。

如果您尝试预先布置即将到来的视图,也可以使用此功能。

Parameters
state RecyclerView.State
Returns
int The extra space that should be laid out (in pixels).

isLayoutRTL

boolean isLayoutRTL ()

Returns
boolean

Hooray!