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

Aligning label text inside an image in a proper way-LibGdx

我想在方框图像中写分数。

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

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());       
    }

分数字符串应该恰好在框的中间image.In这种情况下,当分数位数增加时,字符串对齐不正确。

如何才能始终居中对齐?

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

使用TextButton代替Image+Label

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

button = new TextButton("Button1", textButtonStyle);
stage.addActor(button);

A TextButton 采用要呈现的字符串和 ButtonStyle,在本例中为 TextButtonStyle,它基本上是一个 class,其中包含有关按钮的所有信息(字体,未按下时可绘制渲染,按下时可绘制渲染等)。

您有两个选择: 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 );