From the links provided by Rajesh and g00dy, I was able to come up with a solution.
public static Drawable createDrawable(Context context) { ShapeDrawable shape = new ShapeDrawable(); shape.getPaint().setStyle(Style.FILL); shape.getPaint().setColor( context.getResources().getColor(R.color.transparent)); shape.getPaint().setStyle(Style.STROKE); shape.getPaint().setStrokeWidth(4); shape.getPaint().setColor( context.getResources().getColor(R.color.category_green_stroke)); ShapeDrawable shapeD = new ShapeDrawable(); shapeD.getPaint().setStyle(Style.FILL); shapeD.getPaint().setColor( context.getResources().getColor(R.color.category_green)); ClipDrawable clipDrawable = new ClipDrawable(shapeD, Gravity.LEFT, ClipDrawable.HORIZONTAL); LayerDrawable layerDrawable = new LayerDrawable(new Drawable[] { clipDrawable, shape }); return layerDrawable; }
This code will create a drawable that is visually similar to what xml creates in my question.
source share