2013-01-11 50 views
15

我一直在想方設法將一個按鈕上的文本居中,但找不到一種簡單,多用途的方式。我可以做到,但它只適用於某個字符串,不適用於任何字符串。我想知道是否有辦法將按鈕上的任何字符串居中。我的按鈕在這種情況下是185x50。Libgdx:是否有一種簡單的方法可以在按鈕上的每個軸上居中文本?

我已經能夠在中央顯示屏上這個按鈕,就像這樣:

buttonX = WIDTH/2 - (screen.getRegionWidth()/2); 
buttonY = HEIGHT/2 - (screen.getRegionHeight()/2); 

任何幫助將非常感激。 :)

+0

您是否使用libGDX Stage UI「按鈕」?或者你自己的按鈕類? –

回答

48

更新了答案libgdx版本1.7.1-SNAPSHOT:

要做到這一點最簡單的方法,就是使用TEXT按鈕類從libgdx。 TextButton中的文本默認居中。這仍然有效!

更新例如:

過時的例子:

此不再起作用!

如果你不想使用它,你可以得到的字體寬度和高度:

font.getBounds("Test text"); 

所以,你可以做這樣的事情:

String fontText = ""; 
    fontX = buttonX + buttonWidth/2 - font.getBounds(fontText).width/2; 
    fontY = buttonY + buttonHeight/2 + font.getBounds(fontText).height/2; 
+2

只是添加到這個答案,你可以很容易地通過從遊戲的寬度減去文本的寬度,併除以2.'fontX =(gameWidth - font.getBounds(fontText).width)/ 2' –

+0

我想他們改變了它,因爲我無法在api中找到它 –

+0

@AlexKapustian您可以使用glyphlayout(在較新版本的libgdx中)來實現此目的。 – bytestorm

10

對於新版本libgdx中的函數BitMapFont.getBounds()不再存在於api中。您可以使用GlyphLayout來獲得邊界。例如,

BitmapFont font; 
SpriteBatch spriteBatch; 
//... Load any font of your choice first 
FreeTypeFontGenerator fontGenerator = new FreeTypeFontGenerator(
    Gdx.files.internal("myFont.ttf") 
); 
FreeTypeFontGenerator.FreeTypeFontParameter freeTypeFontParameter = 
     new FreeTypeFontGenerator.FreeTypeFontParameter(); 
freeTypeFontParameter.size = size; 
fontGenerator.generateData(freeTypeFontParameter); 
font = fontGenerator.generateFont(freeTypeFontParameter); 

//Initialize the spriteBatch as requirement 

GlyphLayout glyphLayout = new GlyphLayout(); 
String item = "Example"; 
glyphLayout.setText(font,item); 
float w = glyphLayout.width; 
font.draw(spriteBatch, glyphLayout, (Game.SCREEN_WIDTH - w)/2, y); 
相關問題