问题描述
下图是在鸿蒙应用中使用Switch组件时的状态:
代码中可以使用setTextColor为组件中表示状态的文字颜色。但是问题是选中和非选中文字的颜色会同时改变。如果调查Switch的文档的话可以发现继承自AbsButton类的两个长得比较像的方法:
public void setTextColorOn(Color color)
public void setTextColorOff(Color color)
但是很遗憾,目前的情况是使用这两个方法不能产生期待的效果。
解决办法
需要像下面这样:
Switch sw = (Switch)findComponentById(ResourceTable.Id_btn_switch);
sw.setCheckedStateChangedListener(new AbsButton.CheckedStateChangedListener() {
@Override
public void onCheckedChanged(AbsButton absButton, boolean b) {
if(b){
sw.setTextColor(Color.GREEN);
}else{
sw.setTextColor(Color.WHITE);
}
}
});
根据状态为文字指定颜色。虽然选中和非选中问题同时改变颜色,但是由于只有一侧文字可见,勉强可以救急。以下是选中24H小时制时Switch文字的状态:
参考资料
Switch组件:
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ui-java-component-switch-0000001060806006
Switch类:
https://developer.harmonyos.com/cn/docs/documentation/doc-references/switch-0000001054199994