我想自定义开关,如下图所示。
我尝试过' SwitchCompat'但无法将其自定义为图像。下面是代码。
<div class="wrap">
<div class="char">A</div>
<div class="char">B</div>
<div class="char">C</div>
<div class="char">D</div>
<div class="char">E</div>
</div>
我也试过过&#39; Switch&#39;小部件,但它仍然看起来像所需的自定义开关。
答案 0 :(得分:1)
尝试以编程方式更改它。
请参阅此内容。
public void switchBind(DetailItem item) {
switchColor(item.toggle);
listSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
switchColor(b);
}
});
}
private void switchColor(boolean checked) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
listSwitch.getThumbDrawable().setColorFilter(checked ? Color.BLACK : Color.WHITE, PorterDuff.Mode.MULTIPLY);
listSwitch.getTrackDrawable().setColorFilter(!checked ? Color.BLACK : Color.WHITE, PorterDuff.Mode.MULTIPLY);
}
}
编辑1:
改变颜色的另一种方式。
private void switchColor(boolean isChecked) {
if (Build.VERSION.SDK_INT >= 16) {
int thumbColor;
int trackColor;
if(isChecked) {
thumbColor = Color.argb(255, 253, 153, 0);
trackColor = thumbColor;
} else {
thumbColor = Color.argb(255, 236, 236, 236);
trackColor = Color.argb(255, 0, 0, 0);
}
try {
getThumbDrawable().setColorFilter(thumbColor, PorterDuff.Mode.MULTIPLY);
getTrackDrawable().setColorFilter(trackColor, PorterDuff.Mode.MULTIPLY);
}
catch (NullPointerException e) {
e.printStackTrace();
}
}
}
注意:根据需要更改颜色。