Как изменить цвет переключателя btn track/thumb, когда btn включен / выключен?
Как создать кнопку "Переключатель" в Android Studio (Java), которая меняет свой цвет дорожки / большого пальца при включенном состоянии (например, черный во включенном состоянии, красный в выключенном состоянии). Я уже пытался получить доступ к цветам в 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!");
}
}
});
}
(!!) он не может разрешить дорожку символа и 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>
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.nick.Simple_Flashlight.MainActivity"
android:background="@drawable/radial_background"
>
<Switch
android:id="@+id/mySwitch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:switchMinWidth="200dp"
android:rotation="270"
android:thumb="@drawable/highlight_black_96x96"
android:track="@drawable/track" />
</RelativeLayout>