【问题标题】:Codename One - Layout issue代号一 - 布局问题
【发布时间】:2016-01-29 11:35:39
【问题描述】:

我有一个 GUI 构建的应用程序,我在代码中为某些组件设置了许多图标图像。

问题是我已经确保所有“填充”和“边距”值对于组件的不同状态(未选择、按下等)都是相同的,但是当我尝试将数据输入到 TextFields 时,似乎就像某些组件的尺寸在没有通知的情况下发生变化,它们完全弄乱了我的布局。

甚至有时某些图标会部分消失。请看以下文本输入前后的截图,其中 Container 和 TextFields 缩小了

我真的不知道我还能做什么。我尝试了很多事情,但仍然是相同的结果。请帮忙。

【问题讨论】:

    标签: codenameone


    【解决方案1】:

    您需要使容纳所有这些组件的容器可滚动。

    使用 毫米 作为您的 TextField 填充和边距,不要使用 屏幕百分比。从您发布的图片中的图片来看,上下2mm,左右1mm是合适的。

    如果具有这些图标的组件可以像按钮一样按下,请务必将它们的pressedIcon 设置为相同的图标。

    最后,设置 TextField Unselected 状态的样式并将其复制到 Selected 和 Pressed 状态,以避免错误的样式。

    【讨论】:

    • 仅供参考,我们修复了这个问题github.com/codenameone/CodenameOne/issues/1652,它应该会改进设备构建上的文本组件选择/未选择样式
    • 我的测试设备有一个小屏幕(Samsung S4 mini),所以当我在大设备(​​Samsung Note3)上测试应用程序时,我担心毫米会使布局看起来非常不同。 (是的,Shai,我今天注意到了已解决的问题。非常感谢)
    • 我知道该怎么做,但我遇到了一个错误,所以我需要你的帮助。第一个:我在 GUI Builder 上的 SCREEN PERCENTAGE 中设置值。第二:在 postForm 上,我使用“getMargin(TOP)”...等获取所有边距和填充值,并保存像素值。第三:我得到 TextField 的样式,然后我将之前收集的所有边距和填充值粘贴到该样式中。这样做时,当我尝试调用“setMarginUnit(UNIT_TYPE_PIXELS)”时出现错误。我需要它来粘贴像素中的值。为什么会崩溃?
    • 修复了!!!参数应该是一个数组。所以该方法的正确形式是 setMarginUnit(UNIT_TYPE_PIXELS,UNIT_TYPE_PIXELS,UNIT_TYPE_PIXELS,UNIT_TYPE_PIXELS);文档显示“byte...marginUnit”而不是“byte[] marginUnit”
    • Shai,是否可以打开一个问题,以便当元素的填充和边距值设置为“屏幕百分比”时,这些值不会受到虚拟键盘的影响? (或屏幕上的任何其他元素,就此而言)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    相关资源
    最近更新 更多