2012-03-29 16 views
14

Lo que estoy tratando de haceruso de Android 4.0 estilo togglebutton


Estoy tratando de utilizar en mi diseño del androide 4.0 togglebutton estilo. Para esto, seleccioné Theme = Theme.Holo.Light. Cuando tomo el togglebutton desde allí su cuadrado con la línea verde, si el botón está habilitado.

Pero me gustaría usar el togglebutton como si tuviera allí la configuración en la parte superior (eche un vistazo a la pantalla de impresión).

Pregunta


¿Cómo puedo usar thise togglebutton? ¡Algunos códigos de barras o un tutorial rápido serían geniales!

Saludos

safari

Imagen


screenshot of the togglebuttons

+0

puede crear diseños personalizados para el botón de alternar. – Mayank

+0

así que esto es un corte de corte o qué? – safari

Respuesta

23

Nueva Edit: ahora hizo un backport completo del interruptor de nuevo a la API de nivel 8 y poner en en github: https://github.com/ankri/SwitchCompatLibrary


El antiguo puesto con mi implementación personalizada del interruptor:

Llego un poco tarde a la fiesta pero tuve el mismo problema. Tomé el código fuente de la otra publicación en este paquete e hice mi propia versión del conmutador.

Puede encontrar el código fuente y la documentación on my website

Esto es lo que parece:

SwitchButtonDemo screenshot

de edición: Actualización de enlace y la imagen

+1

hey anri, super arbeit hast da geleistet! Echt respekt! Gruss aus der Schweiz! – safari

+0

es muy útil, pero tengo una pregunta: cómo puedo desactivar el interruptor. setEnabled (falso) no funciona. Gracias – Paul

+1

No puedo conseguir que funcione con parent = android: Theme.Wallpaper –

6

Si su aplicación focalización nivel de API 14 o superior. Utilice el widget Switch y asegúrese de que el tema de su aplicación sea "Theme.Holo" o "Theme.Holo.Light"

Sin embargo, si desea apuntar al nivel de la API en 2.3, debe crear un diseño personalizado. Creo que es bastante complicado explicar eso, te daré un ejemplo.

Puede encontrar la implementación real del botón "Cambiar" en here.

Bueno, puede obtener esa fuente y poner en su proyecto. Tendrá algún error, pero no es tan difícil resolverlo.

+0

gracias lo echaré un vistazo. – safari

+1

¿Hiciste que funcionara? ¿puedes compartir tu solución con nosotros, por favor? gracias – Paul

+0

En realidad, la solución más simple es usar un botón giratorio estilizado para que parezca un interruptor. Voy a publicar una solución más tarde. EDITAR: Solución agregada. – dberm22

21

ACTUALIZACIÓN: Nuevas imágenes funcionan en ambos fondos claros y oscuros. Las imágenes originales todavía están disponibles.

Además, como alguien señala en los comentarios, asegúrese de guardarlos como "* .9.png", es decir, 'switch_on_on_db.9.png', etc.


respuesta de Ankri es grande, pero un poco pesado. Además, utiliza los interruptores 4,2 de estilo en lugar de la anterior (y en mi opinión, más bonita .) 4.1 botones de estilo de una solución rápida, me hicieron una estirable para que pueda estilo de su togglebutton para parecerse a un interruptor

primer lugar, aquí es el estilo de botón:.

<?xml version="1.0" encoding="utf-8"?> 

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/switch_on_on_db" android:state_checked="true" android:state_pressed="true"/> 
<item android:drawable="@drawable/switch_on_on_db" android:state_checked="true" android:state_focused="false"/> 
<item android:drawable="@drawable/switch_off_off_db" android:state_checked="false" android:state_pressed="true"/> 
<item android:drawable="@drawable/switch_off_off_db" android:state_checked="false" android:state_focused="false"/> 
</selector> 

que se refieren a estos images:

enter image description hereenter image description here

Descargar las imágenes originales desde aquí:

Old Off

Old On

Por último, puede estilo de la togglebutton así:

<ToggleButton 
    android:id="@+id/ParamToggleButton" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/toggletoswitch" 
    android:textOff="" 
    android:textOn=""/> 

ACTUALIZACIÓN:

versiones Jelly Bean (aunque no idéntico) están ahora disponibles:

enter image description hereenter image description here

Old Off

Old On

+0

¡buen trabajo! ¡de verdad gracias! – safari

+0

¡Muchas gracias! :) –

+0

¡Publicación impresionante! –

2

Gran solución anterior ... gracias! (Sin nombre que se da?) pensé que alguien podría ser capaz de usar mi XML que trabajaba para mí hacer el togglebutton se ven como un interruptor:

 <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="right|center_vertical" 
      android:orientation="horizontal" > 

      <TextView 
       android:id="@+id/tv_switchToggle" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="10dip" 
       android:layout_marginTop="0dip" 
       android:text="@string/shake_to_add" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:textColor="#ffffff" /> 

      <ToggleButton 
       android:id="@+id/switchToggle" 
       android:layout_width="75dp" 
       android:layout_height="20dp" 
       android:layout_margin="5dip" 
       android:background="@drawable/togglebutton" 
       android:textOff="" 
       android:textOn="" /> 
     </LinearLayout> 

@ estirable/togglebutton se refiere al selector descrito anteriormente. ¡Gracias de nuevo!