How to programmatically round corners and set random background colors
Instead of setBackgroundColor
, retrieve the background drawable and set its color:
v.setBackgroundResource(R.drawable.tags_rounded_corners);GradientDrawable drawable = (GradientDrawable) v.getBackground();if (i % 2 == 0) { drawable.setColor(Color.RED);} else { drawable.setColor(Color.BLUE);}
Also, you can define the padding within your tags_rounded_corners.xml
:
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="4dp" /> <padding android:top="2dp" android:left="2dp" android:bottom="2dp" android:right="2dp" /></shape>
Total programmatic approach to set rounded corners and add random background color to a View.I have not tested the code, but you get the idea.
GradientDrawable shape = new GradientDrawable(); shape.setCornerRadius( 8 ); // add some color // You can add your random color generator here // and set color if (i % 2 == 0) { shape.setColor(Color.RED); } else { shape.setColor(Color.BLUE); } // now find your view and add background to it View view = (LinearLayout) findViewById( R.id.my_view ); view.setBackground(shape);
Here we are using gradient drawable so that we can make use of GradientDrawable#setCornerRadius
because ShapeDrawable
DOES NOT provide any such method.
I think the fastest way to do this is:
GradientDrawable gradientDrawable = new GradientDrawable( GradientDrawable.Orientation.TOP_BOTTOM, //set a gradient direction new int[] {0xFF757775,0xFF151515}); //set the color of gradientgradientDrawable.setCornerRadius(10f); //set corner radius//Apply background to your viewView view = (RelativeLayout) findViewById( R.id.my_view );if(Build.VERSION.SDK_INT>=16) view.setBackground(gradientDrawable);else view.setBackgroundDrawable(gradientDrawable);