我已尝试覆盖paint()
扩展LabelField
我自己的类中的protected void paint(Graphics graphics) {
int previousColor = graphics.getColor();
graphics.setColor(0xFFFFFF);
graphics.drawText(getText(), 2, -2);
graphics.setColor(previousColor);
super.paint(graphics);
}
方法,但如果还有其他更简单的方法,我会忽略它。
我的代码:
{{1}}
我想要实现的目标是:
编辑:如果有人感兴趣,answer by Abhisek会产生以下结果:
答案 0 :(得分:3)
如果Abhishek's answer不起作用,您可以尝试直接在paint
方法中执行此操作。它很容易,只需在bg颜色中绘制一次,然后再在fg颜色上再次绘制它(向下几个像素并留下前一个文本)。像这样:
protected void paint(Graphics graphics) {
graphics.setColor(0xFFFFFF);
graphics.drawText(getText(), 2, 0);
graphics.setColor(0x000000);
graphics.drawText(getText(), 0, 2);
}
请注意您需要2个额外的高度和宽度像素,因此您可能需要覆盖getPreferredWidth
,getPreferredHeight
和/或layout
。
答案 1 :(得分:0)
在黑暗中刺伤,但尝试使用Font.derive(style, height, units, aAntialiasMode, aEffects)
获取字体,在Font.DROP_SHADOW_RIGHT_EFFECT
参数中传递aEffects
并将其应用于相关字段。
告诉我们它是否有效;我没有用它,因为它没有文档!