以正确的方式对齐图像中的标签文本LibGdx

以正确的方式对齐图像中的标签文本LibGdx,libgdx,scene2d,Libgdx,Scene2d,我想把分数写在一个盒子图像里面 首先我把盒子放在这个地方,然后我用这样的标签在上面添加了分数线 private void drawScoreBoxes() { scoreImage = new Image(scoreTexture); stage.addActor(scoreImage); scoreImage.setPosition(UiConstants.BOX_POS_X,UiConstants.BOX_POS_Y2); } private void drawSc

我想把分数写在一个盒子图像里面

首先我把盒子放在这个地方,然后我用这样的标签在上面添加了分数线

private void drawScoreBoxes() {
    scoreImage = new Image(scoreTexture);
    stage.addActor(scoreImage);
    scoreImage.setPosition(UiConstants.BOX_POS_X,UiConstants.BOX_POS_Y2);
}

private void drawScore() {

        Label.LabelStyle scoreStyle = new Label.LabelStyle();// style
        scoreStyle.font = game.font2;
        scoreLabel2 = new Label(scoreController.getScoreString(), scoreStyle);// label
        scoreLabel2.setPosition(scoreImage.getX()+scoreImage.getWidth()/2,scoreImage.getY());       
    }

分数线应该刚好出现在方框图像的中间。在这种情况下,当分数的位数增加时,字符串对齐是不合适的。

如何始终使it中心对齐

我找到了getLabelAlign()、setAlignment(alignment)等方法。 但是我不知道如何正确使用它。

使用而不是
图像
+
标签

TextButton
是一个包含
标签的按钮,您可以将
图像
可绘制部分传递给显示为标签背景部分的按钮

button = new TextButton("Button1", textButtonStyle);
stage.addActor(button);
TextButton
使用字符串和按钮样式进行渲染,在本例中为
TextButtonStyle
,它基本上是一个类,包含有关按钮的所有信息(字体、未按下时可绘制渲染、按下时可绘制渲染等)

使用而不是
图像
+
标签

TextButton
是一个包含
标签的按钮,您可以将
图像
可绘制部分传递给显示为标签背景部分的按钮

button = new TextButton("Button1", textButtonStyle);
stage.addActor(button);
TextButton
使用字符串和按钮样式进行渲染,在本例中为
TextButtonStyle
,它基本上是一个类,包含有关按钮的所有信息(字体、未按下时可绘制渲染、按下时可绘制渲染等)

您有两个选择: 1.使用文本按钮:

Drawable scoreDrawable = new TextureRegionDrawable(new TextureRegion(scoreTexture));

TextButtonStyle textButtonStyle = new TextButtonStyle( scoreDrawable, scoreDrawable, scoreDrawable, font );

TextButton tb = new TextButton( scoreController.getScoreString() );

tb.setDisabled( true );
或2。设置标签边界并对齐文本:

    LabelStyle labelStyle = new LabelStyle( font, Color.BLACK );

    Label scoreLabel = new Label( scoreController.getScoreString(), labelStyle );

    scoreLabel.setBounds( scoreImage.getX(), scoreImage.getY(), scoreImage.getWidth(), scoreImage.getHeight() );

    scoreLabel.setAlignment( Align.center );
您有两个选择: 1.使用文本按钮:

Drawable scoreDrawable = new TextureRegionDrawable(new TextureRegion(scoreTexture));

TextButtonStyle textButtonStyle = new TextButtonStyle( scoreDrawable, scoreDrawable, scoreDrawable, font );

TextButton tb = new TextButton( scoreController.getScoreString() );

tb.setDisabled( true );
或2。设置标签边界并对齐文本:

    LabelStyle labelStyle = new LabelStyle( font, Color.BLACK );

    Label scoreLabel = new Label( scoreController.getScoreString(), labelStyle );

    scoreLabel.setBounds( scoreImage.getX(), scoreImage.getY(), scoreImage.getWidth(), scoreImage.getHeight() );

    scoreLabel.setAlignment( Align.center );