RecycleView 布局

在 1.10.0 版本加入.

布局(Layouts)负责处理 RecycleView 中视图的呈现。

警告

此模块高度实验性,其API未来可能发生变化,且当前文档尚不完整。

exception kivy.uix.recycleview.layout.LayoutChangeException[源代码]

基类:Exception

class kivy.uix.recycleview.layout.LayoutSelectionBehavior(**kwargs)[源代码]

基类:CompoundSelectionBehavior

LayoutSelectionBehavior 可以与 RecycleLayoutManagerBehavior 结合使用,使其派生类具备类似 CompoundSelectionBehavior 为普通布局添加选择行为的能力。

RecycleLayoutManagerBehavior 管理其子组件的方式与普通布局或组件不同,因此本类调整了基于 CompoundSelectionBehavior 的选择机制,使其也能与 RecycleLayoutManagerBehavior 协同工作。

CompoundSelectionBehavior 类似,用户可以通过键盘或触摸进行选择,这会调用 select_node()deselect_node(),也可以直接调用这些方法。当某个项目被选中或取消选中时,会调用 apply_selection()。参见 apply_selection()

apply_selection(index, view, is_selected)[源代码]

将选择应用到视图。当视图显示时,内部会调用此方法,以将其显示为选中或未选中状态。

当调用 select_node()deselect_node() 时,或者当视图需要刷新时,会调用此方法。其功能纯粹是更新视图以反映选择状态。因此,即使选择状态可能未发生变化,此函数也可能被多次调用。

如果视图是 RecycleDataViewBehavior 的实例,那么每次视图需要刷新选择状态时,都会调用其 apply_selection() 方法。否则,此方法负责应用选择。

参数:
index:整数

与视图关联的数据项的索引。

view:控件

该数据项视图所对应的控件。

is_selected:布尔值

该项是否被选中。

deselect_node(node)[源代码]

取消选中可能已选中的节点。

当控制器取消选择一个节点时,会调用此方法;也可以从外部直接调用以取消选择节点。派生的小部件应重写此方法,并在调用时将节点更改为其未选中状态。

参数:
node

要取消选择的节点。

警告

如果该方法被覆盖,派生控件必须使用super调用它。

get_index_of_node(node, selectable_nodes)[源代码]

(内部)返回 nodeget_selectable_nodes() 返回的 selectable_nodes 中的索引。

get_selectable_nodes()[源代码]

(内部)返回可被选择的节点列表。派生控件可以重写此方法以返回正确的列表。

此列表用于确定在组选择时要选中哪些节点。例如,当按下Home键时,将选中列表中的最后一个元素;按下PageDown键时,将从当前选中节点在此列表中的位置开始,按负的 page_count 节点数移动(若按住Shift键,则添加)选择范围,依此类推。尽管如此,即使节点不在此列表中,它们仍可被选中。

备注

动态修改此列表是安全的,包括移除、添加或重新排列其元素。即使节点不在列表中,也可以被选中。从列表中移除的已选中节点将保持选中状态,直到调用 deselect_node() 方法。

警告

布局会以相反的顺序显示其子组件。也就是说,children 的内容是从右到左、从下到上显示的。因此,在内部,此函数返回的元素索引会被反转,以便默认情况下适用于大多数布局,从而使最终结果保持一致,例如,home 虽然在视觉上会选择此列表中的最后一个元素,但在从上到下、从左到右计数时会选择第一个元素。如果不需要此行为,则应返回一个反转后的列表。

默认返回 children

goto_node(key, last_node, last_node_idx)[源代码]

(内部)控制器使用此方法获取由键指示的位置处的节点。键可以是键盘输入,例如 pageup,或鼠标滚轮的滚动输入,例如 scrollup。'last_node' 是最后选中的节点,用于查找结果节点。例如,如果键是向上,则返回的节点是位于最后一个节点上方的一个节点。

它可以被派生的小部件覆盖。

参数:
key

str,用于查找目标节点的字符串。它可以是任意键盘按键,也可以是鼠标滚轮上滚、下滚、右滚和左滚的字符串。如果字母快速连续输入,这些字母会在作为key传入之前被合并,可用于查找关联字符串以这些字母开头的节点。

last_node

最后选中的节点。

last_node_idx

get_selectable_nodes 列表中最后选中节点的缓存索引。如果列表未发生变化,则无需在该列表中查找 last_node 的索引。

返回:

元组,包含由键定位的节点及其在 get_selectable_nodes() 列表中的索引。返回 (last_node, last_node_idx) 表示未找到节点。

key_selection

用于检查数据项视图是否可以通过触摸或键盘选中的键。

key_selection 是数据中的键,如果存在且为 True,将允许通过键盘或触摸选择此项目。当为 None(默认值)时,没有项目可被选择。

key_selection 是一个 StringProperty,默认值为 None。

备注

所有数据项都可以直接使用 select_node()deselect_node() 进行选择,即使 key_selection 为 False 时也是如此。

select_node(node)[源代码]

选择节点。

当控制器选中一个节点时,会调用此方法;也可以从外部直接调用以选中节点。派生的小部件应重写此方法,并在被调用时将节点状态更改为选中状态。

参数:
node

要选择的节点。

返回:

bool,若节点被选中则为True,否则为False。

警告

如果该方法被覆盖,派生控件必须使用super调用它。

class kivy.uix.recycleview.layout.RecycleLayoutManagerBehavior[源代码]

基类:object

RecycleLayoutManagerBehavior 负责在 RecycleView 中,将视图定位到 RecycleView.data 内。当数据对用户可见时,它会将新视图添加到数据中;当数据离开可见区域时,则将其移除。

compute_visible_views(data, viewport)[源代码]

viewport 位于布局管理器的坐标系中。

get_view_index_at(pos)[源代码]

返回视图 index,该视图位于位置 pos 上。

pos 是相对于布局管理器的坐标。

goto_view(index)[源代码]

移动视图,使与 index 对应的视图可见。

key_viewclass

参见 RecyclerView.key_viewclass

refresh_view_layout(index, layout, view, viewport)[源代码]

参见 refresh_view_layout()

set_visible_views(indices, data, viewport)[源代码]

viewport 位于布局管理器的坐标系中。

viewclass

参见 RecyclerView.viewclass