【问题标题】:Codename One combobox styling代号一组合框样式
【发布时间】:2014-11-14 16:30:25
【问题描述】:

请看下图:

我无法摆脱组合框弹出窗口中的白色填充/边距。我在设计器中有两个自定义容器,称为 DropdownItem 和 DropdownItemSelected,ComboBox 渲染器的鱼眼渲染器类型。正如您在组合框中看到的那样,所选项目显示得很好。但是,在没有白色填充的情况下,我无法显示组合框弹出窗口。我实际上使用 PopupContentPane 在弹出窗口周围添加蓝色边框,我还将边框设置为空,所有边距/填充设置为 0 以用于以下 UIID:PopupItem、PopupFocus、DropdownItem 和 DropdownItemSelected。 PopupContentPane 也将所有填充/边距设置为 0。另请参阅我的内容:

我浏览了源代码,但找不到任何其他有用的 UIID 可以设置样式以删除这些白色填充。有人可以帮我解决这个问题吗?

更新:

可能会有所帮助 - 请参阅下面将 PopupContentPane 边框病设置为 2px 时弹出窗口的外观:

更新 2:

差不多了。将listItemGapInt 常量设置为 0 后,我设法消除了列表项之间的间隙。请看下面的截图。

我仍然不知道如何消除右侧 2 个像素的间隙,也不知道它是从哪里来的。将不胜感激任何想法/想法。

更新 3:

我最终找到了两个像素的来源。

com.codename1.ui.ComboBox 类,第 289-290 行

289 int listW = Math.max(getWidth() , l.getPreferredW());
290 listW = Math.min(listW + getUIManager().getLookAndFeel().getVerticalScrollWidth(), 
             parentForm.getContentPane().getWidth());

在我的特殊情况下,listW=630px 和第 290 行中的 listW 被重新计算为 Math.min(630 + 2, 768),其中 2px 是垂直滚动的宽度。

可以说,滚动条应该是 ComboBox 弹出框的一部分。

【问题讨论】:

    标签: combobox codenameone


    【解决方案1】:

    我设法消除了不必要的空白。正如我在“更新 2”中提到的,listItemGapInt 应设置为 0 以消除水平间隙。

    垂直间隙与滚动条有关,但尚不清楚是垂直滚动条造成该间隙。在我将Scroll UIID 的填充设置为 0 后,垂直间隙消失了。

    【讨论】:

      【解决方案2】:

      关于更新 3,这是一个错误,但不是因为它应该在容器中。该列表是可滚动的,因此它应该是列表的一部分,但是应该调用l.getSideGap() 而不是getVerticalScrollWidth()

      这将允许您通过将滚动条设置为可见 false 等来隐藏它。我们将在下次更新时修复它。

      【讨论】:

      • 感谢您的解释。幸运的是 Codename One 是开源的,几乎可以调试任何问题)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-17
      • 2011-01-28
      • 2010-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多