I have a ShapeDrawable . I want to set the CornerRadius (TopLeftRadius & BottomLeftRadius) programmatically.
Below is my xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:top="5dp"
android:bottom="5dp">
<shape android:shape="rectangle">
<corners android:topLeftRadius="20dp"
android:bottomLeftRadius="20dp"/>
<solid android:color="#A2D368"/>
</shape>
</item>
</layer-list>
Do like this;
float mRadius=3f;
GradientDrawable drawable=new GradientDrawable();
drawable.setShape(GradientDrawable.RECTANGLE);
drawable.setCornerRadii(new float[]{mRadius, mRadius, 0, 0, 0, 0, mRadius, mRadius});
for more details click here
Use setCornerRadii (float[] radii)
method of GradientDrawable.
In general this method takes a float array of size 8.
For each of the 4 corners 2 radii values are needed x radii and y radii.
The corners are ordered top-left, top-right, bottom-right, bottom-left in float array.
Since you asked for topleft and bottomleft radius, you need to set radii value to first 2 and last 2 indexes of float array.
sample ->
setCornerRadii(new float[]{50, 50, 0, 0, 0, 0, 50, 50})
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