I made a special RadioButton button that looks like this on an Android 5.0 device.

These RadioButtons are created dynamically, as shown in the following methods. Thus, the first redioButtonPresenterApparence method sets its appearance by removing the circle (by setting buttonDrwable to null. The second method sets the background of the buttons later.
private void radioButtonPresenterApparence(RadioButton presenter, int icon) { Drawable drawable = getResources().getDrawable(icon); presenter.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null); presenter.setButtonDrawable(null); presenter.setGravity(Gravity.CENTER); } private void updateButtonsBackground(){ int childCount = getChildCount(); BackgroundSelector bgSelector = new BackgroundSelector(childCount); for(int i = 0; i < childCount; i++){ View rb = getChildAt(i); rb.setBackgroundResource( bgSelector.getBackgroundResource(i) ); rb.requestLayout(); } requestLayout(); }
My problem is that when testing on Samsung Android 4.4.4 devices (not sure about other manufacturers) it looks like this.

PS: This is the code created by RadioButton. You can check this in the following way:
private void addPresenter(int icon){ RadioButton presenter = new RadioButton(getContext());
source share