指定 GUI 元素在 CN1 中的绝对位置

Specify absolute position of GUI element in CN1

如何指定屏幕元素(按钮、标签、图像等)按像素或相对位置出现在屏幕上的特定位置?例如以下假设情况:

  1. 要以像素 350x 500y 为中心的元素
  2. 一个元素放置在屏幕下方 65% 和左边缘对面 40% 的位置,占据屏幕宽度的 30%。
  3. 将元素 B 放置在元素 A 右侧 25 像素处

我看过几个关于 GUI 构建器和布局管理器的教程视频,并通读了开发人员指南的几个部分,但看不出如何完成这些看似基本的任务。

您可以使用从自定义布局管理器到一些边距设置的工具来完成所有这些操作,但大多数期望是 "wrong"。

在 resolution/density 可以发生根本性变化的移动设备中,基于像素甚至倾角放置东西是没有意义的,例如您的应用需要在 iPhone 3gs 320x480 或 480x320 上看起来不错(这将使选项 1 无关紧要)然后它需要在 iPad pro 2732x2048 上看起来不错并且密度差异是 3 倍意味着任何标准iPad pro!

上的像素看起来会小 3 倍

您需要考虑距离的倾角(毫米),而不是像素。然后你需要改变你对定位的看法,以逻辑而不是绝对的方式思考,例如诸如居中、左侧等词有效...

关于你的观点:

  1. 您可以通过多种方式执行此操作,所有这些方式都是不正确的,因为它们会在各种设备上损坏。您可以将自己的布局管理器实现为 explained in the developer guide。 您也可以只使用 pixels/millimeters 中的边距将组件移动到位。

  2. 答案与 1 相同,因为边距支持百分比、毫米和像素。要确定 width/height 只需重写 calcPreferredSize() 方法,但这又是一个有问题的概念,因为您可能与密度显着改变 image/font 大小的事实发生冲突...

  3. 虽然我会使用 3-4 毫米这样的边距,但它在所有设备上看起来都是一致的,所以这是对边距的有效使用。