颜色更改取决于操作(按钮单击)

时间:2017-01-16 21:10:16

标签: android android-layout colors android-resources

如何在Android Studio(Java)中创建一个切换按钮,在状态为ON时更改其轨道颜色(例如,黑色处于ON状态,红色处于OFF状态)。

我已经尝试访问tack.xmlcolor.xml中的颜色,但每次打开/关闭按钮时都不知道如何更改它们,特别是Switch的背景颜色跟踪(我已经能够改变整个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!"); 



            }
        }
    });

}

}

!!)它无法解析符号tracktrackColor,我无法解释原因。

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>

1 个答案:

答案 0 :(得分:0)

您可以在java代码中执行此操作:

Button button = (Button) findViewById(R.id.buttonId);

然后你可以使用方法setOnClicklistener来检测点击,方法setBackGroundColor来改变按钮的颜色。