2012-03-29 3 views
14

Ce que je suis en train de faireUtiliser Android 4.0 style togglebutton


Je suis en train d'utiliser dans ma mise en page l'Android 4.0 togglebutton style. Pour cela, j'ai sélectionné le Theme = Theme.Holo.Light. Quand je prends le bouton à bascule de là, c'est ce carré avec la ligne verte, si le bouton est activé. Mais je voudrais utiliser le bouton à bascule comme ils sont entrés là config sur le dessus (jetez un oeil à l'écran).

Question


Comment puis-je utiliser Thise togglebutton? Certains codesnippets ou un tutoriel rapide serait génial!

Cordialement

safari

Photo


screenshot of the togglebuttons

+0

Vous pouvez créer une disposition personnalisée pour le bouton bascule. – Mayank

+0

donc c'est un cutomlayout ou quoi? – safari

Répondre

23

New Edit: je maintenant fait un backport complet de l'interrupteur à l'API de niveau 8 et la mettre sur github: https://github.com/ankri/SwitchCompatLibrary


L'ancien poste avec mon implémentation personnalisée du commutateur:

Je suis un peu en retard à la fête mais j'ai eu le même problème. J'ai pris le code source de l'autre poste dans ce thred et fait ma propre version du commutateur.

Vous pouvez trouver le code source et la documentation on my website

Voici à quoi il ressemble:

SwitchButtonDemo screenshot

modifier: lien Mise à jour et de l'image

+1

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

+0

son est très utile, mais j'ai une question: comment je peux rendre le commutateur désactivé. setEnabled (false) ne fonctionne pas. Merci – Paul

+1

Impossible de le faire fonctionner avec parent = android: Theme.Wallpaper –

6

Si votre application cible de niveau 14 ou supérieur api. Utilisez le widget Switch et assurez-vous que le thème de votre application est "Theme.Holo" ou "Theme.Holo.Light"

Cependant, si vous souhaitez cibler le niveau d'API sous 2.3, vous devez effectuer une mise en page personnalisée. Je pense que c'est assez compliqué à expliquer à ce sujet, je vais vous donner un exemple.

Vous pouvez trouver la véritable implémentation du bouton "Commutateur" dans here.

Eh bien, vous pouvez simplement obtenir cette source et mettre dans votre projet. Vous aurez une erreur mais ce n'est pas si difficile à résoudre.

+0

merci je vais jeter un coup d'oeil. – safari

+1

avez-vous réussi à le faire fonctionner? pouvez-vous partager votre solution avec nous s'il vous plaît? merci – Paul

+0

En fait, la solution la plus simple est d'utiliser un bouton à bascule stylisé pour ressembler à un interrupteur. Je posterai une solution plus tard. EDIT: Solution ajoutée. – dberm22

21

MISE À JOUR: De nouvelles images fonctionnent à la fois arrière-plans clairs et foncés. Des images originales encore disponibles.

De même, comme quelqu'un le fait remarquer dans les commentaires, assurez-vous de les enregistrer comme "* .9..png », à savoir « switch_on_on_db.9.png », etc.


La réponse de Ankri est grande, mais alittle lourd. De plus, il utilise les commutateurs 4.2 de style par opposition à l'ancienne (et à mon avis, plus jolie .) 4.1 boutons de style pour une solution rapide, je fait une drawable afin que vous puissiez le style de votre togglebutton pour ressembler à un commutateur

d'abord, voici le style de bouton:.

<?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> 

qui se réfèrent à ces images:

enter image description hereenter image description here

Téléchargez les images originales d'ici:

Old Off

Old On

Enfin, vous pouvez le style de la togglebutton comme ceci:

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

MISE À JOUR:

versions Jelly Bean (mais pas identiques) sont maintenant disponibles:

enter image description hereenter image description here

Old Off

Old On

+0

grand travail! vraiment merci! – safari

+0

Merci beaucoup! :) –

+0

Super post !! –

2

Grande solution ci-dessus ... merci! (Pas de nom donné?) Je pensais que quelqu'un pourrait être en mesure d'utiliser mon xml qui a fonctionné pour moi de faire le togglebutton regarder comme un interrupteur:

 <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> 

@ drawable/togglebutton fait référence au sélecteur décrit ci-dessus. Merci encore!