Cambiar el color "encendido" de un Switch
Estoy usando un control Switch estándar con el tema holo.light en una aplicación ICS.
Quiero cambiar el color resaltado o activado del botón de alternancia del azul claro estándar al verde.
Esto debería ser fácil, pero parece que no sé cómo hacerlo.
Tarde para la fiesta pero así es como lo hice
Estilo
<style name="SCBSwitch" parent="Theme.AppCompat.Light">
<!-- active thumb & track color (30% transparency) -->
<item name="colorControlActivated">#46bdbf</item>
<!-- inactive thumb color -->
<item name="colorSwitchThumbNormal">#f1f1f1
</item>
<!-- inactive track color (30% transparency) -->
<item name="android:colorForeground">#42221f1f
</item>
</style>
Colores
Disposición
<android.support.v7.widget.SwitchCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:checked="false"
android:theme="@style/SCBSwitch" />
Resultado
Ver cambio de colores para interruptor de habilitación y deshabilitación.
A partir de ahora es mejor utilizar SwitchCompat de la biblioteca AppCompat.v7. Luego puedes usar un estilo simple para cambiar el color de tus componentes.
values/themes.xml:
<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
<!-- colorPrimary is used for the default action bar background -->
<item name="colorPrimary">@color/my_awesome_color</item>
<!-- colorPrimaryDark is used for the status bar -->
<item name="colorPrimaryDark">@color/my_awesome_darker_color</item>
<!-- colorAccent is used as the default value for colorControlActivated,
which is used to tint widgets -->
<item name="colorAccent">@color/accent</item>
<!-- You can also set colorControlNormal, colorControlActivated
colorControlHighlight, and colorSwitchThumbNormal. -->
</style>
ref: Blog de desarrolladores de Android
EDITAR :
La forma en que se debe aplicar correctamente es mediante android:theme="@style/Theme.MyTheme"
y también se puede aplicar a estilos principales como EditTexts, RadioButtons, Switches, CheckBoxes y ProgressBars:
<style name="My.Widget.ProgressBar" parent="Widget.AppCompat.ProgressBar">
<style name="My.Widget.Checkbox" parent="Widget.AppCompat.CompoundButton.CheckBox">