2017-06-23 9 views
0

.packファイルを作成し、スキンにロードします。 Imageクラスのdrawableとして設定でき、うまく動作します。しかし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です。そして...独自のサイズのアイテムをテーブルに追加するテーブルの幅と高さを変更しないでください。どうして?そして 'setWrap(true) 'を持つラベルが1行の高さだけを返すならば、どうすればそれを使うことができますか? –

+0

テーブルを構築するための完全なコードを貼り付け、シーンに追加します。最小幅/高さを付けずに追加されたアクターは、自動的にシーンを塗りつぶさないので、最小幅/高さを設定するか、シーン全体を満たすように設定します。 – Bernd

+0

@Berndはフルコードの質問をチェックします。 ...最小幅/高さを設定すると、テーブルが使用するよりもそれが使用されますか? OK。しかし、コンテンツの実際の幅と高さは、理論的に選択された最小値よりも顕著に大きい。 –

答えて

0

表にaddActorを使用しないでください。テーブルにアクターを追加するには、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); 

あなたが見ることができるように、これはあなたが展開する()、および()メソッドを埋めると、テーブルに、幅を指定することができます、あなたも要素が1列内のすべての利用可能なスペースを埋めることができます。テーブルのこの自動レイアウトを使用すると、テーブルは適切なサイズになり、背景が表示されます。 libGdxテーブルのレイアウトの使い方については、hereを参照してください。

+0

ラベルの高さが分からない場合はどうすればいいですか?ラップされたラベルは実際の高さを返しません。 1行のテキストの高さを返します。 –

+0

ラベルの高さを指定する必要はありません。テーブルはすべて自動的にレイアウトされます。ラップされたラベルが他のすべてのアクタよりも背が高い場合、行は単にラップされたラベルの高さを持ちます。詳細はこの答えを見てください:https://stackoverflow.com/a/18557487/4735988 – Bernd

+0

私は 'add()'メソッドを試しましたが、テーブルの高さは0です。 –

関連する問題