2017-06-23 31 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。 –