Drawing a filled rectangle with a border in android

Uwais Iqbal picture Uwais Iqbal · Nov 24, 2012 · Viewed 82.6k times · Source

Is there any way in Android to draw a filled rectangle with say a black border. My problem is that the canvas.draw() takes one paint object, and to my knowledge the paint object can't have a different color for the fill and the stroke. Is there a way around this?

Answer

wannik picture wannik · Aug 24, 2013

Try paint.setStyle(Paint.Style.FILL) and paint.setStyle(Paint.Style.STROKE).

Paint paint = new Paint();
Rect r = new Rect(10, 10, 200, 100);

@Override
public void onDraw(Canvas canvas) {
    // fill
    paint.setStyle(Paint.Style.FILL);
    paint.setColor(Color.MAGENTA); 
    canvas.drawRect(r, paint);

    // border
    paint.setStyle(Paint.Style.STROKE);
    paint.setColor(Color.BLACK);
    canvas.drawRect(r, paint);
}