1:需求
如果要实现勾选框居右的AppCompatCheckBox怎么办。
image.png
肯定有人会说直接用TextView加一个选择器给DrawableRight不就可以了吗?但是这样有一点不足,就是没有AppCompatCheckBox状态变化的动画了。应该也有人会用一个LinearLayout包裹一个TextView和一个AppCompatCheckBox去实现,但是这样就会导致布局层级变深,布局里面的View的数量增加,布局加载速度变慢。
2:实现过程
1、AppCompatCheckBox是否拥有一个属性可以设置成这样的样式呢?带着这个问题我翻遍了AppCompatCheckBox可设置的属性,没有发现可以使勾选框居右的属性。
2、查看AppCompatCheckBox的源码,看勾选框是怎么绘制的。发现勾选框的绘制是在CompoundButton里面完成的。
@Override
protected void onDraw(Canvas canvas) {
final Drawable buttonDrawable = mButtonDrawable;
if (buttonDrawable != null) {
final int verticalGravity = getGravity() & Gravity.VERTICAL_GRAVITY_MASK;
final int drawableHeight = buttonDrawable.getIntrinsicHe