0

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

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

4

5 回答 5

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

在此处输入图像描述

于 2012-12-22T13:17:35.393 回答
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);
于 2012-12-22T11:38:46.213 回答
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

于 2012-12-22T12:00:31.540 回答
0

我不确定android是否支持这种颜色的十六进制代码( 0xFFFFFFFF ),将 0x 替换为 # of 0xFFFFFFFF 并使用

paint.setColor(Color.parseColor("#FFFFFFFF"));

代替

paint.setColor(0xFFFFFFFF);

希望这对您有所帮助。

于 2012-12-22T12:02:13.440 回答
-2

经过一番调查,我发现了问题和解决方案:

我的错误是,除了 onDraw() 方法之外,我还在子视图中使用了半透明背景颜色 setBackgroundColor(0x88000000),这导致了奇怪的结果,即灰色文本颜色而不是白色文本颜色。当我从子视图中删除方法 setBackgroundColor() 时,文本颜色现在为白色。

谢谢大家的想法和建议!

于 2012-12-22T13:43:36.160 回答