我试着设置`Toggle Drawable'在AppCompatRadioButton的右侧'带
的文字public class mRadioButton extends AppCompatRadioButton {
public mRadioButton(Context context) {
super(context);
init();
}
...
private void init() {
setButtonDrawable(null);
int padding = Constant.calculateDimen(getContext(), 20.0);
setPadding(padding, padding, padding, padding);
setGravity(Gravity.RIGHT);
setLayoutParams(new FrameLayout.LayoutParams(-1, -1));
int[] attrs = { android.R.attr.listChoiceIndicatorSingle };
TypedArray ta = getContext().getTheme().obtainStyledAttributes(attrs);
Drawable indicatorDrawable = ta.getDrawable(0);
setCompoundDrawables(null, null, indicatorDrawable, null);
ta.recycle();
}
}
但最终,没有出现Toggle Drawable:
如果设置评论setButtonDrawable(null);
,则添加切换文字左侧:
并设置setButtonDrawable(indicator);
出现Toggle Drawable左侧的文本右侧:
发生了什么,什么是错的,该怎么做?
答案 0 :(得分:0)
感谢@Napster我改变了:
setCompoundDrawables(null, null, indicatorDrawable, null);
致:
setCompoundDrawablesWithIntrinsicBounds(null,null,indicatorDrawable,null);
然后我搜索发生了什么,发现了这个:
手动设置文字和图片的相对位置,常用方法如下:
setCompoundDrawables(left, top, right, bottom);
setCompoundDrawablesWithIntrinsicBounds(left, top, right, bottom);
意思是在文本上,左,右,下位置设置Drawable显示。
但两者不同:
setCompoundDrawables
Paint drawable的宽度和高度是drawable.setBound()设置宽度和高度,
因此,Drawables必须已经调用了setBounds(Rect)。
在使用长度和宽度之前,必须使用Drawable.setBounds
设置Drawable。
setCompoundDrawablesWithIntrinsicBoundsDraw
可绘制的宽度和高度是可绘制的固定宽度和高度,
所以,只需拥有The Drawables'边界将被设置为其内在界限。