Cómo aplicar un estilo personalizado a SwitchCompat

Me gustaría aplicar un estilo personalizado a SwitchCompat. Cambie los caracteres desplegables y el texto para encender y apagar el estado. ¿Cómo puedo conseguir esto? No puedo encontrar ejemplos sobre cómo se hace esto. He intentado lo siguiente en mi styles.xml pero aparentemente no estoy usando el padre correcto:

<style name="Switch" parent="android:Widget.AppCompat.Widget.CompoundButton.SwitchCompat"> <item name="android:textOn">@string/common_yes</item> <item name="android:textOff">@string/common_no</item> <item name="android:thumb">@drawable/btn_switch_selector</item> <item name="android:track">@drawable/btn_switch_bg_selector</item> </style> 

Editar

Me las arreglé para cambiar el drawables en código.

 switchView.setThumbResource(R.drawable.btn_switch_selector); switchView.setTrackResource(R.drawable.btn_switch_bg_selector); 

pero no he encontrado una manera de cambiar el texto del conmutador. El fragmento siguiente no parece funcionar. Tal vez necesito establecer algunas propiedades de texto más?

 switchView.setTextOn(context.getString(R.string.common_yes)); switchView.setTextOff(context.getString(R.string.common_no)); 

De acuerdo con el código fuente SwitchCompat debe haber soporte para el texto de encendido / apagado: https://android.googlesource.com/platform/frameworks/support/+/421d8baa4a524e1384bcf033360bccaf8d55081d/v7/appcompat/src/android/support/v7/widget/ SwitchCompat.java

La propiedad {@link #setText (CharSequence)} controla el texto que se muestra en la etiqueta del switch, mientras que el texto {@link #setTextOff (CharSequence) off} y {@link #setTextOn (CharSequence)} controla el texto en el pulgar.

Editar 2

Finalmente encontré una solución de código. Al parecer, setShowText() debe establecerse en true para que el texto aparezca en el conmutador.

 switchView.setTextOn(context.getString(R.string.common_yes)); switchView.setTextOff(context.getString(R.string.common_no)); switchView.setShowText(true); switchView.setThumbResource(R.drawable.btn_switch_selector); switchView.setTrackResource(R.drawable.btn_switch_bg_selector); 

y solución xml

 <android.support.v7.widget.SwitchCompat android:id="@+id/view_switch" android:layout_width="wrap_content" android:layout_height="wrap_content" android:thumb="@drawable/btn_switch_selector" app:track="@drawable/btn_switch_bg_selector" android:textOn="@string/common_yes" android:textOff="@string/common_no" app:showText="true" /> 

Todavía me gustaría saber si hay una manera de poner esto en styles.xml .

2 Solutions collect form web for “Cómo aplicar un estilo personalizado a SwitchCompat”

Finalmente encontré una forma de aplicar el mismo estilo en toda mi aplicación. Puse la siguiente línea en mi themes.xml

 <item name="switchStyle">@style/Custom.Widget.SwitchCompat</item> 

Y lo siguiente en mi styles.xml

 <style name="Custom.Widget.SwitchCompat" > <item name="android:thumb">@drawable/btn_switch_selector</item> <item name="track">@drawable/btn_switch_bg_selector</item> <item name="showText">true</item> <item name="android:textOn">@string/common_yes</item> <item name="android:textOff">@string/common_no</item> </style> 

El estilo debe incluir al padre

 <item name="switchStyle">@style/MySwitchCompat</item> <style name="MySwitchCompat" parent="Widget.AppCompat.CompoundButton.Switch"> <item name="android:textColor">@color/accent</item> <item name="android:fontFamily">sans-serif-light</item> </style> 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.