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?
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); }
If you are drawing multiple views then you could also use two paints, one for the stroke and one for the fill. That way you don't have to keep resetting them.
Paint fillPaint = new Paint(); Paint strokePaint = new Paint(); RectF r = new RectF(30, 30, 1000, 500); void initPaints() { // fill fillPaint.setStyle(Paint.Style.FILL); fillPaint.setColor(Color.YELLOW); // stroke strokePaint.setStyle(Paint.Style.STROKE); strokePaint.setColor(Color.BLACK); strokePaint.setStrokeWidth(10); } @Override protected void onDraw(Canvas canvas) { // First rectangle canvas.drawRect(r, fillPaint); // fill canvas.drawRect(r, strokePaint); // stroke canvas.translate(0, 600); // Second rectangle int cornerRadius = 50; canvas.drawRoundRect(r, cornerRadius, cornerRadius, fillPaint); // fill canvas.drawRoundRect(r, cornerRadius, cornerRadius, strokePaint); // stroke }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With