在视图画布上绘制文本时,文本颜色太暗

时间:2012-12-22 11:33:21

标签: android android-canvas drawtext

我使用以下代码在视图画布上绘制文本:

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)来解决问题, 不幸的是没有成功。

5 个答案:

答案 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);
    }
}

enter image description here

答案 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()时,文本颜色现在是白色。

谢谢大家的意见和建议!