2017-06-23 32 views
0

我制作了.pack文件并加载到皮肤。我可以将它设置为可绘制的图像类,它工作正常。但Table.setBackground什么都不做。Libgdx表setBackground什么也不做

Drawable background = skin.getDrawable("tooltip_background"); 
tooltipGroup.setBackground(background); 

为什么这段代码不工作?

全码:

tooltipGroup = new Table(skin); 
       tooltipGroup.setWidth(w/6); 
       Label.LabelStyle headerStyle = new Label.LabelStyle(headerFont, Color.GREEN); 
       Label headerLabel = new Label(effect.getName(), headerStyle); 
       headerLabel.setWidth(w/6); 
       headerLabel.setX(20); 
       headerLabel.setWrap(true); 
       headerLabel.setAlignment(Align.topLeft); 
       tooltipGroup.addActor(headerLabel); 
       Label.LabelStyle style = new Label.LabelStyle(font, Color.WHITE); 
       Label descriptionLabel = new Label(effect.getDescription(), style); 
       descriptionLabel.setWidth(w/6); 
       descriptionLabel.setWrap(true); 
       descriptionLabel.setAlignment(Align.topLeft); 
       descriptionLabel.setPosition(20, -descriptionLabel.getHeight()); 
       tooltipGroup.addActor(descriptionLabel); 
       tooltipGroup.setPosition(mouseX, h - mouseY); 
       Drawable background = skin.getDrawable("tooltip_background"); 
       tooltipGroup.setBackground(background); 
       stage.addActor(tooltipGroup); 
+0

我发现有什么问题。在init中,表的宽度和高度= 0。并且...将具有它们自己尺寸的项目添加到Table中,不会改变Table的宽度和高度。为什么?我如何处理这个问题,如果带'setWrap(true)'的标签只返回一行的高度? –

+0

粘贴构建表格的完整代码,并将其添加到场景中。不添加最小宽度/高度的演员不会自动填充场景,因此要么设置最小宽度/高度,要么将其设置为填充整个场景。 – Bernd

+0

@Bernd检查完整代码的问题。 和...如果我设置最小的宽度/高度,比表将使用它?好。但是,内容的实际宽度和高度显着超过理论上选择的最小值。 –

回答

0

不要在表上使用addActor。为了将Actors添加到表格中,请使用add方法,并指定自定义参数,如链接方法中的参与者的填充或宽度/高度。像这样,您可以控制如何将演员添加到表中,因为表执行自动布局。

Table rootTable = new Table(); 
rootTable.setFillParent(true); 

TextField fieldFirst = new TextField("First", skin); 
TextField fieldSecond = new TextField("Second", skin); 

rootTable.add("First:"); 
rootTable.add(fieldFirst).width(100).row(); 
rootTable.add("Second:"); 
rootTable.add(fieldSecond).width(100); 

stage.addActor(rootTable); 

正如你所看到的,这允许您指定的宽度,在表中,与扩大(),并填写()方法,你甚至可以有一个元素填补一个行内的所有可用空间。一旦你使用这个自动布局你的表,表应该有适当的大小,并且你的背景应该显示。有关如何使用libGdx表布局的更多信息,请参见here

+0

如果我不知道Label的高度,我该怎么办?包裹的标签不能返回它的真实高度。它是一行文本的返回高度。 –

+0

你不需要指定标签的高度,表格应该自动为你设计一切。如果包装的标签比所有其他演员高,该行将只包含包装标签的高度。看看这个答案更多信息:https://stackoverflow.com/a/18557487/4735988 – Bernd

+0

我试过'add()'方法,但表的高度为0。 –