Вам нужно получить размер изображения, которое вы используете, чтобы добавить ваш отступ к этому размеру. На внутренних устройствах Android они получают отрисовку, указанную вами в src, и впоследствии используют ее размер. Поскольку это закрытая переменная и нет получателей, вы не можете получить к ней доступ. Также вы не можете получить com.android.internal.R.styleable.CompoundButton и получить оттуда отрисовку.
Так что вам нужно создать свой собственный стиль (то есть custom_src) или вы можете добавить его непосредственно в вашу реализацию RadioButton:
public class CustomRadioButton extends RadioButton {
private Drawable mButtonDrawable = null;
public CustomRadioButton(Context context) {
this(context, null);
}
public CustomRadioButton(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CustomRadioButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
mButtonDrawable = context.getResources().getDrawable(R.drawable.rbtn_green);
setButtonDrawable(mButtonDrawable);
}
@Override
public int getCompoundPaddingLeft() {
if (Util.getAPILevel() <= Build.VERSION_CODES.JELLY_BEAN_MR1) {
if (drawable != null) {
paddingLeft += drawable.getIntrinsicWidth();
}
}
return paddingLeft;
}
}