so I have two different Drawables that I need to combine and get one Drawable at runtime. I want the first Drawable be above and the other below. I stumbled upon LayerDrawable , and it seems to me that this is exactly what I need, but I'm having problems setting up Drawables .
So, I have an ImageButton that is 48x48 dp , and here the final Drawable ends. The first Drawable is the plus button (20x20 dp ), and the second is a small dot (4x4 dp ) below the plus button.
The plus button Drawable loaded using font characters. I create a Drawable point button using this xml fragment:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="@color/white_40"/> <size android:width="4dp" android:height="4dp"/> </shape>
My first approach was to simply add Drawables to the LayerDrawable , but when I do this, the width / height attributes of the point specified in the xml are ignored and stretched to cover the plus sign.
LayerDrawable finalDrawable = new LayerDrawable(new Drawable[] {plusIcon, dotIcon});
The above results:

The second approach I tried was to use setLayerInset to try to position two Drawables .
LayerDrawable finalDrawable = new LayerDrawable(new Drawable[] {plusIcon, dotIcon}); finalDrawable.setLayerInset(0, 0, 0, 0, 0); finalDrawable.setLayerInset(1, dp(22), dp(44), dp(22), 0);
The above code fragment finished placing the point in the correct position, but also began to affect the position and size of the plus button, and it looked like this:

But I really want the plus button to be in the center of the ImageButton icon and the plus below it. Does anyone have an idea where I am wrong, and how can I correctly position two drawings?
PS: My application supports API 15+, so I canβt use a bunch of methods from the LayerDrawable API like setLayerGravity , `setPaddingMode, etc.