tipos tema sirven que para modificar los estilos estilo crear como android android-theme appcompat switchcompat

android - sirven - que es un tema en word



Cómo aplicar un estilo personalizado a SwitchCompat (2)

El estilo debe incluir el 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>

Me gustaría aplicar un estilo personalizado a SwitchCompat. Cambiar dibujables y texto para el estado de encendido y apagado. ¿Cómo puedo conseguir esto? No puedo encontrar ningún ejemplo sobre cómo se hace esto. Intenté 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 los elementos dibujables en el código.

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

pero todavía no he encontrado una manera de cambiar el texto del interruptor. El siguiente fragmento de código 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 de SwitchCompat, debería haber soporte para el texto de activación / desactivación: 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 conmutador, mientras que {@link #setTextOff (CharSequence) off} y {@link #setTextOn (CharSequence) on} text controla el texto en el pulgar

Editar 2

Finalmente encontré una solución de código. Al parecer, setShowText() debe establecer 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 .


Finalmente, encontré una forma de aplicar el mismo estilo en toda la aplicación. themes.xml 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>