【发布时间】:2017-01-16 21:10:15
【问题描述】:
如何在 Android Studio (Java) 中创建一个 Switch 按钮,当其状态为 ON 时更改其轨道颜色(例如,黑色处于 ON 状态,红色处于 OFF 状态)。
我已经尝试访问 tack.xml 或 color.xml 中的颜色,但它不知道每次打开/关闭按钮时如何更改它们,尤其是切换轨道的背景颜色(我是已经能够改变整个 Btn 的背景)。你知道如何改变 Switch 轨道的背景颜色吗?
这是我的代码(MainActivity)的重要部分:
private TextView switchState;
private Switch mySwitch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
switchState = (TextView)findViewById(R.id.switchState);
mySwitch = (Switch)findViewById(R.id.mySwitch);
track = (trackColor)findViewById(R.id.trackColor); //**!!
// set the Switch to off
mySwitch.setChecked(false);
//now you need a listener to check changes in state
mySwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
switchState.setText("Switch is ON!");
mySwitch.setBackgroundColor(Color.RED);
trackColor.setBackgroundColor(Color.RED); //**!!
}else{
switchState.setText("Switch is OFF!");
}
}
});
}
}
(!!) 它无法解析符号 track 和 trackColor,我无法解释原因。
track.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<size android:height="40dp" />
<gradient
android:id="@+id/trackColor"/>
<gradient
android:height="40dp"
android:startColor="#2979FF"
android:endColor="#FFFF00"/>
</shape>
【问题讨论】:
标签: android android-layout colors android-resources