我可以像这样改变字体的颜色
LabelStyle style1 = new LabelStyle(..some font...,
Color.valueOf("FF4500")
);
label.setStyle(style1);
Run Code Online (Sandbox Code Playgroud)
但是如何更改背景?现在背景与设置的整个屏幕的背景相同
渲染方法lke this
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
Gdx.gl.glClearColor(
1.000f, 0.980f, 0.941f
,1);
Run Code Online (Sandbox Code Playgroud)
jwe*_*rle 10
Label label = new Label(labelText, skin);
Pixmap labelColor = new Pixmap(labelWidth, labelHeight, Pixmap.Format.RGB888);
labelColor.setColor(<your-color-goes-here>);
labelColor.fill();
label.getStyle().background = new Image(new Texture(labelColor)).getDrawable();
Run Code Online (Sandbox Code Playgroud)
基本上,使用Image类的getDrawable()函数来指定Label的LabelStyles背景Drawable的颜色.
这是我能够提出的最简单的解决方法,坦率地说,Label类中没有setBackground()是愚蠢的.
实际上,也许最简单的解决方法是破解Label类并为其添加setBackground()方法.
[编辑]完成后,请务必处理Pixmaps; 即labelColor.dispose();
[更新] @Mitrakov Artem提出了一个很好的观点:上述解决方案将影响此LabelStyle的所有实例.如果这不是您想要的,您可以创建一个新的LabelStyle,在其上使用上面的方法,然后将其保存到Label.引用Artem:"所以我建议创建一个新样式(LabelStyle style = new LabelStyle(label.getStyle());),更改其背景然后将其应用于标签(label.setStyle(style);)"
实际上你并没有像那样改变标签的背景。你只是改变了透明颜色。我猜你知道这一点。
要更改背景,您需要更改标签样式的背景。为此,我建议使用简单的NinePatch背景(可以是正方形!如果它是白色的,您可以更改九块的颜色,背景颜色也会改变!)
NinePatch temp = new NinePatch(new Texture(....), 10, 10, 10, 10); //edges
Run Code Online (Sandbox Code Playgroud)
有关 ninepatch 的更多信息,请查看此处 libgdx wiki ninepatch
您需要将该 ninepatch 添加到 Skin 对象中。例如像这样
Skin skin = new Skin();
skin.add("background",temp)
Run Code Online (Sandbox Code Playgroud)
之后,您可以从皮肤中获取可绘制的内容,您可以将其设置为背景LabelStyle。
style1.background = skin.getDrawable("background");
Run Code Online (Sandbox Code Playgroud)
您还可以使用简单的位图,但它会缩放到标签大小,这在大多数情况下会导致变形。Ninepatch 可以在不变形的情况下进行缩放。
| 归档时间: |
|
| 查看次数: |
11444 次 |
| 最近记录: |