2014-03-05 66 views
1

我想創建一個包含可點擊條目的滾動動態列表。我的問題是 條目的字體大小。字體太小。我是否需要創建一個單獨的皮膚才能使用它,或者有什麼方法可以縮放現有的字體。我目前使用未改變的uiskin。這是我的代碼。我能夠添加列表條目,並且它們都是可點擊的(這裏沒有包含監聽器代碼),但顯示時文本太小。Libgdx指定滾動動態列表條目的字體大小

skin = new Skin(Gdx.files.internal("uiskin.json")); 
    shotArrayList = new ArrayList<String>(); 
    shotList = new List(shotArrayList.toArray(),skin); 
    ScrollPane scrollPane2 = new ScrollPane(shotList, skin); 
    table.add(scrollPane2).width(w*0.7f).height(h*0.3f); 

我只將scrollpane放在表格單元格中,以幫助放置在與其他演員的舞臺上。我不認爲它真的影響我的字體大小問題。這種創建動態滾動列表的方法確實很好,但我願意提供更好的解決方案。

我的問題只是字體大小。我曾嘗試使用標籤的ArrayList,因爲我可以將一個比例應用於標籤,但是當我將ArrayList轉換爲數組時,我的條目全都簡單地表示爲「標籤」。我希望我已經解釋了我的問題並熱切期待解決方案。

回答

3

在uiskin.json文件,你會發現,指定字體如線:

com.badlogic.gdx.graphics.g2d.BitmapFont: { default-font: { file: default.fnt } } 

您可以指定任何你喜歡的字體,並在這裏使用的字體名稱的默認文件中的其他地方引用它-font」。您需要使用位圖字體生成器(如BMFont)以所需大小預先生成字體。

您可以從BMFont導出字體並將其添加到資產文件夾中。

第二個選項是縮放皮膚中已經使用的字體,儘管字體從未看起來不錯。假設'default-font'是您的字體的名稱,您可以使用以下方法將字體大小加倍。

skin.getFont("default-font").scale(2); 

您可以通過打開字體的線性過濾來稍微提高縮放比例。

skin.getFont("default-font").getRegion().getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear); 

所以你的最終代碼看起來像這樣

skin = new Skin(Gdx.files.internal("uiskin.json")); 
skin.getFont("default-font").scale(2); 
skin.getFont("default-font").getRegion().getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear); 
shotArrayList = new ArrayList<String>(); 
shotList = new List(shotArrayList.toArray(),skin); 
ScrollPane scrollPane2 = new ScrollPane(shotList, skin); 
table.add(scrollPane2).width(w*0.7f).height(h*0.3f); 

如果你想獲得更高級的字體縮放技術,那麼你可能感興趣的distance field fonts