Класс CheckBox расширяет CompoundButton, но ничего не добавляет к нему. Но кое-как, как это получает его соответствующий взгляд. Я нашел некоторые объявления в источниках Android, но интересно, как они отображаются в класс CheckBox?
public class CheckBox extends CompoundButton {
public CheckBox(Context context) {
this(context, null);
}
public CheckBox(Context context, AttributeSet attrs) {
this(context, attrs, com.android.internal.R.attr.checkboxStyle);
}
public CheckBox(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
}
Стили
<style name="Theme">
<item name="checkboxStyle">@android:style/Widget.CompoundButton.CheckBox</item>
</style>
<style name="Widget.CompoundButton.CheckBox">
<item name="android:background">@android:drawable/btn_check_label_background</item>
<item name="android:button">@android:drawable/btn_check</item>
</style>
EDIT:
Наверное, мне было непонятно ... Я понимаю, как рисование назначается стилю Widget.CompoundButton.CheckBox, но как этот стиль назначается классу CheckBox? Я вижу ".CheckBox" в названии стиля, но действительно ли это соглашение об именах делает этот трюк? Если да, то каковы правила? Если я получу MyCheckBox от CompoundButton, могу ли я просто определить стиль Widget.CompoundButton.MyCheckBox, и он будет работать?