如何在libgdx列表中设置特定行的颜色?

时间:2016-03-18 19:15:34

标签: list libgdx scene2d

我正在开发一个列表,我希望通过以红色显示字体颜色来突出显示某些行。这可能吗?

编辑: 好的,这是我的代码的简化版本:

Skin defListSkin = new Skin(Gdx.files.internal("data/uiskin.json"));

List listHistory = new List<String>(defSkin);

// Here I set the general font color for the list
List.ListStyle listStyle = listHistory.getStyle();
listStyle.font = fontList;
listStyle.fontColorUnselected = Color.LIGHT_GRAY;
listHistory.setStyle(listStyle);

String[] items = new String[20];

// Example of item[]
// item[0]: "John   12"
// item[1]: "Amy    -3" <-- I want certain lines to appear in red (e.g. those with negative numbers)

// Populate the list
listHistory.setItems(items);

// Drawing the list (actual draw happens in render() of course)
Table myTable = new Table();
myTable.add(listHistory);
stage.addActor(myTable);

2 个答案:

答案 0 :(得分:2)

使用Libgdx支持的颜色标记语言。

标记语法非常简单但仍具有多种用途:

[name]按名称设置颜色。有一些预定义的颜色,请参阅Colors.reset()方法以获得详尽的列表。用户可以通过Colors类的方法定义自己的颜色。 [#xxxxxxxx]以RRGGBBAA格式设置十六进制值xxxxxxxx指定的颜色,其中AA是可选的,默认为0xFF。 []将颜色设置为上一个颜色(可选结束标记的种类) [[逃离左括号。

默认情况下禁用标记。使用public member font.getData()。markupEnabled打开/关闭它。

参考:https://github.com/libgdx/libgdx/wiki/Color-Markup-Language

如果您想要更复杂的HTML标记,可以使用这些模板:https://github.com/czyzby/gdx-lml,实时测试:http://czyzby.github.io/gdx-lml-tests/

答案 1 :(得分:0)

我知道你的意思,我不认为这是可能的。列表项都链接到相同的listStyle,更改列表项颜色的唯一方法是为listHistory创建一个新样式并更改此样式的字体颜色,但是如果这样做,它会更改每个项目在列表中的新字体颜色。我的建议是创建两个单独的列表和两个单独的ListStyles,并且您想要红色的行在一个列表中并且具有一种样式,并且您不希望变为红色的行在另一个列表中并且具有不同的样式。希望这有帮助