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>
修改
可能我不清楚......我理解如何将drawable分配给Widget.CompoundButton.CheckBox样式,但是这个样式如何分配给CheckBox类?我在样式名称中看到了“.CheckBox”,但是这个命名约定真的是什么诀窍呢?如果是这样,那么规则是什么?如果我从CompoundButton派生MyCheckBox,我可以只定义Widget.CompoundButton.MyCheckBox样式,它会起作用吗?
答案 0 :(得分:4)
答案是:<item name="android:button">@android:drawable/btn_check</item>
drawable可以有多个状态(无论元素是否被聚焦,按下等),这就是复选框的不同状态。
编辑:在您修改问题之后,我发现您正在寻找不同的东西。再一次,这就是你发布的内容:<style name="Widget.CompoundButton.CheckBox">
这就是风格。
<item name="checkboxStyle">@android:style/Widget.CompoundButton.CheckBox</item>
主题(android.internal.R.attr)有一个属性“checkboxStyle”,指向这种风格。
public CheckBox(Context context, AttributeSet attrs) {
this(context, attrs, com.android.internal.R.attr.checkboxStyle);
}
构造函数将该属性分配给视图。就是这样。
答案 1 :(得分:1)
就在这里
<item name="android:button">@android:drawable/btn_check</item>