我使用以下代码在视图画布上绘制文本:
Paint paint = new Paint();
paint.setTextSize(14);
paint.setColor(0xFFFFFFFF);
paint.setAntiAlias(true);
@Override
public void onDraw(Canvas canvas){
super.onDraw(canvas);
canvas.drawText("abcdef", 0, 0, paint);
}
问题:
文本以深灰色而不是白色(0xFFFFFFFF)显示。 为什么这样?
我尝试使用setShadowLayer()或paint.setAntiAlias(false)来解决问题, 不幸的是没有成功。
答案 0 :(得分:1)
在res / value
中设置此项<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="white">#FFFFFF</color>
</resources>
然后将其放入您的代码中 -
int myColor = context.getResources().getColor(com.example.test.R.color.white);
paint.setColor(myColor);
答案 1 :(得分:1)
必须在其他地方修改油漆颜色(或alpha?)。我按如下方式实现了您的代码,文本颜色为白色。
private void drawText() {
LinearLayout layout = (LinearLayout) findViewById(R.id.main_view);
if (layout != null){
View myView = new MyView(this);
myView.setBackgroundColor(Color.BLACK);
layout.addView(myView, 300, 100);
}
}
private class MyView extends View{
public Paint paint;
public MyView(Context context) {
super(context);
paint = new Paint();
paint.setTextSize(25);
paint.setColor(0xFFFFFFFF);
paint.setAntiAlias(true);
}
@Override
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
canvas.drawText("abcdef", 0, 25, paint);
}
}
答案 2 :(得分:0)
这样的颜色设置代替您的代码使用此
Paint Paint = new Paint();
Paint.setAntiAlias(true);
Paint.setDither(true);
Paint.setColor(Color.WHITE);
Paint.setStyle(Paint.Style.STROKE);
Paint.setStrokeJoin(Paint.Join.ROUND);
Paint.setStrokeCap(Paint.Cap.ROUND);
Paint.setStrokeWidth(10);
见这里是一个很好的例子blogspot.in
答案 3 :(得分:0)
我不确定android是否支持这种颜色的十六进制代码(0xFFFFFFFF),将0x替换为0xFFFFFFFF的#并使用
paint.setColor(Color.parseColor("#FFFFFFFF"));
而不是
paint.setColor(0xFFFFFFFF);
希望这会对你有所帮助。
答案 4 :(得分:-2)
经过一些调查,我发现了问题和解决方案:
我的错误是,除了onDraw()方法之外,我在子视图中使用半透明背景颜色setBackgroundColor(0x88000000),这导致奇怪的结果,即灰色文本颜色而不是白色文本颜色。当我从子视图中删除方法setBackgroundColor()时,文本颜色现在是白色。
谢谢大家的意见和建议!