在一个屏幕中,我有两个管理器:1)菜单管理器在顶部,2)主体管理器有信息/按钮元素。菜单管理器执行自定义绘图,以便其菜单元素(LabelFields)的间距适当。
核心问题-经理和子领域绘图顺序
主体管理器添加或删除字段时,
菜单管理器不是先绘制它自己,然后再绘制它的子元素(标签字段),而是先绘制它的子元素,然后再绘制它自己
; 因此,在标签字段的顶部进行绘制,使它们看起来像消失了一样。
评论
删除自定义子布局是可行的——解决此问题的唯一方法是删除菜单管理器自定义子布局逻辑。不幸的是,菜单系统然后以传统的方式绘制,并没有提供足够的间距。
public void sublayout(int iWidth, int iHeight)
{
final int iNumFields = getFieldCount();
int maxHeight = 0;
final int segmentWidth = iWidth / iNumFields;
final int segmentWidthHalf = segmentWidth / 2;
for (int i = 0; i < iNumFields; i++)
{
final Item currentField = (Item)this.getField(i);
final int xSegmentTrueCenter = segmentWidth * i + segmentWidthHalf;
final int xFieldStart = xSegmentTrueCenter - currentField.getFont().getAdvance(currentField.getText())/2;
setPositionChild(currentField, xFieldStart, getContentTop() + MenuAbstract.PADDING_VERTICAL);
layoutChild(currentField, iWidth, currentField.getHeight());
maxHeight = currentField.getHeight() > maxHeight
? currentField.getHeight() + 2 * MenuAbstract.PADDING_VERTICAL
: maxHeight;
}
this.setExtent(iWidth, maxHeight);
}
最后的问题
-
-
在屏幕上添加/删除字段元素时,菜单管理器为什么会以错误的顺序开始绘图?
-