我正在开发一个列表,我希望通过以红色显示字体颜色来突出显示某些行。这可能吗?
编辑: 好的,这是我的代码的简化版本:
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);
答案 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,并且您想要红色的行在一个列表中并且具有一种样式,并且您不希望变为红色的行在另一个列表中并且具有不同的样式。希望这有帮助