我有许多 UI 元素,如面板、编辑字段、按钮、标签等。因此面板包含其他面板,其中包含输入字段、编辑器等。大多数元素都是可编辑和/或可调整大小的,这意味着每当我更改任何内容时,许多相邻的 UI 元素都应该更改其在 Pane 上的宽度、高度和 x/y 位置。它适用于少量元素,但当元素数量达到数千时,速度非常慢。 在这种情况下是否可以使用快速布局算法?请注意,我不能使用任何现有的布局管理器,应该提出我自己的实现。
最佳答案
我建议借鉴 Android 的做法,使用更大的“网格”,并将所有内容的大小保持为模倍数 - 这可以避免您每次都需要解决背包问题!
例如,您可以将其作为元数据存储为 {2:1}(假设您的布局网格为 40^40 正方形),而不是宽度为 80、高度为 40 的按钮。
这样,如果您的工作面板的空间为 {2:12},则可以填充两个大小为 {2:6} 的对象或 3 个大小为 {2:4} 的对象。
适应最大也非常简单,因为任何可用空间都可以放大(假设您删除了一个 {1:1} 项目,您可以扩展它旁边的项目来占用空间等 - 您可以当然,围绕对象是否可以在单个方向上缩放等创建您自己的规则。
这种方法的另一个优点是,您也可以轻松管理不同的屏幕尺寸和分辨率,同时仍然保持相同的框架和外观。
关于algorithm - UI 的快速布局算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62853730/