¿Cómo personalizar el botón?
Estoy mirando a la aduana el botón del Switch
a convertirse como siguiendo:
- OnCheckedChanged se llama automáticamente
- Android - cambia el estado de un switch de forma programática sin activar OnCheckChanged listener
- Estilizar / colorear el botón SwitchCompat en Android Lollipop para el diseño del material
- Personalizar la pista de conmutación Android 'animación'
- Andoird: Custom switch: Cómo hacer el pulgar más del 50% de una pista sin usar imágenes
¿Cómo lograrlo?
- Cambiar Estado del conmutador sin animación
- Android: ¿La API necesaria para usar Switch?
- Cambiar en el adaptador para un ListView
- Error de lanzamiento de SwitchCompat
- Botón de conmutación Android Diseño personalizado
- Custom Switch - el tamaño de la pista y el selector no funcionan por debajo de 21 API
- Preferences Support Library - SwitchPreference no funciona
- El botón Switch no muestra texto ON y OFF en Android
Puede utilizar el siguiente código para cambiar el color y el texto :
<org.jraf.android.backport.switchwidget.Switch android:id="@+id/th" android:layout_width="match_parent" android:layout_height="wrap_content" app:thumb="@drawable/apptheme_switch_inner_holo_light" app:track="@drawable/apptheme_switch_track_holo_light" app:textOn="@string/switch_yes" app:textOff="@string/switch_no" android:textColor="#000000" />
Cree un xml denominado colors.xml en la carpeta res / values:
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="red">#ff0000</color> <color name="green">#00ff00</color> </resources>
En la carpeta dibujable, cree un archivo xml my_btn_toggle.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="false" android:drawable="@color/red" /> <item android:state_checked="true" android:drawable="@color/green" /> </selector>
Y en la sección de xml que define su botón del toggle agregan:
android:background="@drawable/my_btn_toggle
Cambiar el color del textOn
de textOn
y textOff
android:switchTextAppearance="@style/Switch"
Sin embargo, esto podría no ser la mejor manera, pero he tomado una manera diferente de resolver todo mi problema relacionados con Switch. Aquí está mi código –
<RadioGroup android:checkedButton="@+id/offer" android:id="@+id/toggle" android:layout_width="match_parent" android:layout_height="30dp" android:layout_marginBottom="@dimen/margin_medium" android:layout_marginLeft="50dp" android:layout_marginRight="50dp" android:layout_marginTop="@dimen/margin_medium" android:background="@drawable/pink_out_line" android:orientation="horizontal"> <RadioButton android:layout_marginTop="1dp" android:layout_marginBottom="1dp" android:layout_marginLeft="1dp" android:id="@+id/search" android:background="@drawable/toggle_widget_background" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:button="@null" android:gravity="center" android:text="Search" android:textColor="@color/white" /> <RadioButton android:layout_marginRight="1dp" android:layout_marginTop="1dp" android:layout_marginBottom="1dp" android:id="@+id/offer" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/toggle_widget_background" android:button="@null" android:gravity="center" android:text="Offers" android:textColor="@color/white" /> </RadioGroup>
Pink_out_line.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="2dp" /> <solid android:color="#80000000" /> <stroke android:width="1dp" android:color="@color/pink" /> </shape>
Toggle_widget_background.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/pink" android:state_checked="true" /> <item android:drawable="@color/dark_pink" android:state_pressed="true" /> <item android:drawable="@color/transparent" /> </selector>
Y aquí está la salida –
<Switch android:layout_width="wrap_content" android:layout_height="wrap_content" android:thumb="@drawable/custom_switch_inner_holo_light" android:track="@drawable/custom_switch_track_holo_light" android:textOn="@string/yes" android:textOff="@string/no"/>
Drawable / custom_switch_inner_holo_light.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="false" android:drawable="@drawable/custom_switch_thumb_disabled_holo_light" /> <item android:state_pressed="true" android:drawable="@drawable/custom_switch_thumb_pressed_holo_light" /> <item android:state_checked="true" android:drawable="@drawable/custom_switch_thumb_activated_holo_light" /> <item android:drawable="@drawable/custom_switch_thumb_holo_light" /> </selector>
Dibujable / custom_switch_track_holo_light.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:drawable="@drawable/custom_switch_bg_focused_holo_light" /> <item android:drawable="@drawable/custom_switch_bg_holo_light" /> </selector>
Las siguientes imágenes son 9.paths drawables y deben estar en densidad diferente (mdpi, hdpi, xhdpi, xxhdpi). Como ejemplo doy xxhdpi (usted puede cambiar el tamaño ellos si u necesario):
Drawable / custom_switch_thumb_disabled_holo_light
Drawable / custom_switch_thumb_pressed_holo_light
Drawable / custom_switch_thumb_activated_holo_light
Drawable / custom_switch_thumb_holo_light
Drawable / custom_switch_bg_focused_holo_light
Drawable / custom_switch_bg_holo_light
Puede utilizar el widget de conmutador regular y simplemente llamar a setTextOn()
y setTextOff()
, o usar los android:textOn
y android:textOff
.
Más información en este enlace: http://www.mokasocial.com/2011/07/sexily-styled-toggle-buttons-for-android/
<ToggleButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/toggle_me"/>
Y el dibujable será algo así como:
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:drawable="@drawable/toggle_me_on" /> <!-- checked --> <item android:drawable="@drawable/toggle_me_off" /> <!-- default/unchecked --> </selector>