Как заполнить текст обводки в пользовательском представлении? - PullRequest
1 голос
/ 23 декабря 2011

Я подготовил один пользовательский вид с кодом вида,

    mPaint.setDither(true);
            mPaint.setColor(0xFFFFFFFF);
            mPaint.setTextSize(100);
            mPaint.setStyle(Paint.Style.STROKE);
            mPaint.setStrokeJoin(Paint.Join.ROUND);
            mPaint.setStrokeCap(Paint.Cap.ROUND);
            mPaint.setStrokeWidth(2);

protected void onDraw(Canvas canvas) {

          canvas.drawText("Android",100,100,mPaint);


    }

просмотр результатов:

http://i.imgur.com/hh96q.png

здесь я хочу заполнить цветом внутри "Android". Я подготовил еще один объект для рисования,

mAlphaInner.setDither(true);
        mAlphaInner.setColor(0xFF0000FF);
        mAlphaInner.setTextSize(98);

добавлено в onDraw (),

 canvas.drawText("Android",100,100,mPaint);

но вид есть,

http://i.imgur.com/BtD3G.png

помогите, пожалуйста, как залить цветом внутри "Android".

Ответы [ 2 ]

0 голосов
/ 12 апреля 2013

Нарисуйте текст дважды, используя два разных режима.

        mPaint.setDither(true);
        mPaint.setColor(0xFFFFFFFF);
        mPaint.setTextSize(100);
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setStrokeJoin(Paint.Join.ROUND);
        mPaint.setStrokeCap(Paint.Cap.ROUND);
        mPaint.setStrokeWidth(2);

        mAlphaInner.set(mPaint);  //Set the same text size!
        mAlphaInner.setColor(0xFF0000FF);
        mAlphaInner.setStyle(Paint.Style.FILL_AND_STROKE);

    protected void onDraw(Canvas canvas) {
      canvas.drawText("Android",100,100,mAlphaInner);
      canvas.drawText("Android",100,100,mPaint);
   }
0 голосов
/ 23 декабря 2011

Что если вы попробуете mPaint.setStyle(Pain.Style.FILL_AND_STROKE)

РЕДАКТИРОВАНИЕ:

Забудьте о Paint.setTextAlign(Paint.Align.CENTER) в обеих красках

...