[不完美的解决方案] 虚拟列表的自动调整列表项目大小行为和滑动条显示没有互动

普通的列表,比如一个单列竖排的列表,在列表高度或者列表成员增减时伴随滑动条显示或者隐藏,在 FairyGUI 编辑器内可以观察到列表成员的宽度会自适应滑动条的显隐,有滑动条就窄一点,没有就宽一点。
但是如果设置列表为虚拟列表,无论列表是否显示滑动条,只要列表可能出现滑动条,列表项目就一定会为滑动条留出空间,哪怕现在不需要显示滑动条。
似乎是 GList::RefreshVirtualList 这个方法需要做的事,它的实现和 GList::UpdateBounds 的实现不同的地方是前者完全没有访问 GList::scrollPane.vtScrollBar.width 这个值,但我一时间不知道怎么修。
FairyGUI 运行时是 5.1.0
已邀请:

谷主

赞同来自:

虚拟列表不支持这一特性,因为虚拟列表本身的复杂度已经太高了,很难兼顾这么精细的控制。
可选的方案是利用滚动条的float特性,稍微牺牲一点item的右边缘。

Ichi

赞同来自:

终于腾出手再次关注这件事。这里有一个不完美的解决方案,没有经过充分测试,只测试过常见的单列竖排和单行横排列表,纵向和横向滚动条在右侧/下侧。
思路是在 itemRenderer 之前增加一个阶段修改最终绘制的控件的尺寸,而在查看源代码之后发现其实它有这个阶段。
修改过的 GList.cs 放在附件里,如果还有人需要的话。
 

要回复问题请先登录注册