Combobox 代码名一个组合框样式

Combobox 代码名一个组合框样式,combobox,codenameone,Combobox,Codenameone,请参见下图: 我无法在组合框弹出窗口中去除白色填充/边距。我在designer中有两个名为DropdownItem和DropdownItemSelected的自定义容器,用于组合框渲染器的鱼眼渲染器类型。正如您在组合框中看到的,选中的项目显示得很好。然而,在我无法得到组合框弹出显示没有白色填充。实际上,我已经使用PopupContentPane在弹出窗口周围添加了蓝色边框,我还将边框设置为空,将以下UIID的所有边距/填充设置为0:PopupItem、PopupFocus、DropdownIte

请参见下图:

我无法在组合框弹出窗口中去除白色填充/边距。我在designer中有两个名为DropdownItem和DropdownItemSelected的自定义容器,用于组合框渲染器的鱼眼渲染器类型。正如您在组合框中看到的,选中的项目显示得很好。然而,在我无法得到组合框弹出显示没有白色填充。实际上,我已经使用PopupContentPane在弹出窗口周围添加了蓝色边框,我还将边框设置为空,将以下UIID的所有边距/填充设置为0: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+2768),其中2px是垂直滚动的宽度


据我所知,滚动条应该是一个部件组合框弹出窗口。

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

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


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


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

谢谢您的解释。幸运的是,Codename One是开源的,可以调试几乎所有的问题)