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
类似的功能。
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是否位于布局的中间或滚动,如果 是 ,则抛出 |
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的子项创建默认的 |
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) |
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
|
相关方法:
相关方法:
相关方法:
int HORIZONTAL
常量值:0(0x00000000)
int INVALID_OFFSET
常量值:-2147483648(0x80000000)
int VERTICAL
常数值:1(0x00000001)
LinearLayoutManager (Context context)
创建一个垂直的LinearLayoutManager
Parameters | |
---|---|
context |
Context : Current context, will be used to access resources. |
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 (Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)
当布局管理器由RecyclerView属性“layoutManager”设置为XML时使用的构造器。 默认为垂直方向。
相关XML属性:
Parameters | |
---|---|
context |
Context
|
attrs |
AttributeSet
|
defStyleAttr |
int
|
defStyleRes |
int
|
void assertNotInLayoutOrScroll (String message)
检查RecyclerView是否位于布局的中间或滚动,如果 是 ,则抛出 IllegalStateException
。
Parameters | |
---|---|
message |
String : The message for the exception. Can be null. |
boolean canScrollHorizontally ()
查询当前是否支持水平滚动。 默认实现返回false。
Returns | |
---|---|
boolean |
true if getOrientation() is HORIZONTAL |
boolean canScrollVertically ()
查询当前是否支持垂直滚动。 默认实现返回false。
Returns | |
---|---|
boolean |
true if getOrientation() is VERTICAL |
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 |
PointF computeScrollVectorForPosition (int targetPosition)
Parameters | |
---|---|
targetPosition |
int
|
Returns | |
---|---|
PointF |
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 |
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 |
int findFirstCompletelyVisibleItemPosition ()
返回第一个完全可见视图的适配器位置。 此位置不包括在上次布局传递后分派的适配器更改。
请注意,边界检查仅在当前方向上执行。 这意味着,如果LayoutManager是水平的,它只会检查视图的左右边缘。
Returns | |
---|---|
int |
The adapter position of the first fully visible item or NO_POSITION if there aren't any visible items. |
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. |
int findLastCompletelyVisibleItemPosition ()
返回最后一个完全可见视图的适配器位置。 此位置不包括在上次布局传递后分派的适配器更改。
请注意,边界检查仅在当前方向上执行。 这意味着,如果LayoutManager是水平的,它只会检查视图的左右边缘。
Returns | |
---|---|
int |
The adapter position of the last fully visible view or NO_POSITION if there aren't any visible items. |
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. |
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 |
int getOrientation ()
返回布局的当前方向。
Returns | |
---|---|
int |
Current orientation, either HORIZONTAL or VERTICAL |
也可以看看:
boolean getRecycleChildrenOnDetach ()
返回LayoutManager是否将从RecyclerView中分离时回收它的子项。
Returns | |
---|---|
boolean |
true if LayoutManager will recycle its children when it is detached from RecyclerView. |
boolean getReverseLayout ()
如果视图从布局的相反方向布置,则返回。
Returns | |
---|---|
boolean |
If layout is reversed or not. |
也可以看看:
boolean getStackFromEnd ()
Returns | |
---|---|
boolean |
boolean isSmoothScrollbarEnabled ()
返回平滑滚动条功能的当前状态。 它是默认启用的。
Returns | |
---|---|
boolean |
True if smooth scrollbar is enabled, false otherwise. |
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. |
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 |
void onInitializeAccessibilityEvent (AccessibilityEvent event)
Parameters | |
---|---|
event |
AccessibilityEvent
|
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 |
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 |
Parcelable onSaveInstanceState ()
当LayoutManager保存其状态时调用。 如果重新创建LayoutManager,这是保存滚动位置,配置和恢复相同布局状态所需的其他任何东西的好时机。
RecyclerView不会验证LayoutManager是否在状态保存和恢复之间更改。 这可以让你在你的布局管理器之间共享信息,但它也是你的责任,确保他们使用相同的可分类。
Returns | |
---|---|
Parcelable |
Necessary information for LayoutManager to be able to restore its state |
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)
滚动RecyclerView以使位置可见。
RecyclerView将滚动显示目标位置所需的最小量。 如果您正在寻找与setSelection(int)
或setSelectionFromTop(int, int)
类似的行为,请使用scrollToPositionWithOffset(int, int)
。
请注意,直到下一次布局调用时才会反映滚动位置更改。
Parameters | |
---|---|
position |
int : Scroll to this adapter position |
void scrollToPositionWithOffset (int position, int offset)
使用已解析的版面开始的给定偏移量滚动到指定的适配器位置。 解决布局开始依赖于getReverseLayout()
, getLayoutDirection(android.view.View)
和getStackFromEnd()
。
例如,如果布局为 VERTICAL
和 getStackFromEnd()
为真,则调用 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. |
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 setOrientation (int orientation)
设置布局的方向。 LinearLayoutManager
将尽最大努力保持滚动位置。
Parameters | |
---|---|
orientation |
int : HORIZONTAL or VERTICAL |
void setRecycleChildrenOnDetach (boolean recycleChildrenOnDetach)
设置当它从RecyclerView分离时,LayoutManager是否会回收它的子项。
如果您使用的是 RecyclerView.RecycledViewPool
,则将此标志设置为 true
可能是个好主意,以便视图可以立即与其他RecyclerView进行 true
。
请注意,如果RecyclerView恢复,设置此标志将导致性能下降。
Parameters | |
---|---|
recycleChildrenOnDetach |
boolean : Whether children should be recycled in detach or not. |
void setReverseLayout (boolean reverseLayout)
用于反转项目遍历和布局顺序。 这与RTL视图的布局更改类似。 设置为true时,第一项布置在UI的末尾,第二项布置在它之前等。对于水平布局,它取决于布局方向。 当设置为true时,如果RecyclerView
是LTR,那么它将从RTL布局,如果RecyclerView
}是RTL,它将从LTR进行布局。 如果您正在寻找setStackFromBottom(boolean)
的完全相同的行为,请使用setStackFromEnd(boolean)
Parameters | |
---|---|
reverseLayout |
boolean
|
void setSmoothScrollbarEnabled (boolean enabled)
当启用平滑滚动条时,滚动条缩略图的位置和大小将根据可见项目中可见像素的数量进行计算。 然而,这假定所有列表项具有相似或相等的宽度或高度(取决于列表方向)。 如果使用项目具有不同尺寸的列表,则滚动条将在用户滚动列表时更改外观。 为了避免这个问题,你需要禁用这个属性。 当平滑滚动条被禁用时,滚动条缩略图的位置和大小仅基于适配器中的项目数量和适配器内可见项目的位置。 这提供了一个稳定的滚动条,因为用户在不同宽度/高度的项目列表中导航。
Parameters | |
---|---|
enabled |
boolean : Whether or not to enable smooth scrollbar. |
void setStackFromEnd (boolean stackFromEnd)
兼容性支持 setStackFromBottom(boolean)
Parameters | |
---|---|
stackFromEnd |
boolean
|
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. |
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 |
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). |
boolean isLayoutRTL ()
Returns | |
---|---|
boolean |