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

ペイント カラー (またはアルファ?) が変更されている場所が他にあるはずです。次のようにコードを実装しました。テキストの色は白です。

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がこの色の16進コード( 0xFFFFFFFF )をサポートしているかどうかはわかりません.0xを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 に答える