Comment puis-je créer une Préférence avec un EditTextPreference et un Togglebutton?
Ce que je suis en train de mettre en œuvre est fondamentalement et l'exacte réplique de l'image ci-dessous (les préférences que j'ai au carré). En appuyant sur quelque chose à la gauche de la préférence devrait ouvrir une boîte de dialogue. En appuyant sur le togglebutton va désactiver/activer quoi que je suis dans cette préférence.
J'ai essayé pendant des heures maintenant et je suis venu les mains vides. Comment puis-je l'appliquer dans un PreferenceActivity?
EDIT: Il semble que les gens sont incompréhension de ma question. Il est très important pour moi de trouver comment résoudre mon problème en utilisant un PreferenceActivity. PAS une Activité. Je ne se soucie pas si je dois le faire en XML, ou par programmation. Juste s'il vous plaît s'abstenir de me fournir des réponses que je ne peux pas utiliser à l'intérieur d'un ou quelque chose de similaire.
EDIT 2 : Ajout d'un bounty - je vraiment besoin d'une réponse à cette
- Heureux de vous l'avais commencé ce fil! 🙂
Vous devez vous connecter pour publier un commentaire.
L'enfer de l'homme, j'aime bien ton idée 🙂
C'est juste la même chose que @MH réponse, mais plus concis.
J'ai testé avec
ToggleButton
, pasSwitch
.Et la
preferences.xml
:EncryptorEditTextPreference
n'est pas lié à votre question, mais il utilise la même technique (extension deEditTextPreference
).Juste une remarque d'avance: cela va être un peu longue à répondre, mais mon intention est de vous fournir un bon-à-go réponse que l'on pourrait littéralement copier et coller pour obtenir commencé.
Ce n'est pas trop difficile à réaliser. Votre meilleur point de départ serait d'examiner la mise en œuvre d'un
SwichPreference
sur ICS. Vous allez voir c'est assez simple, la plupart des travaux effectués par unTwoStatePreference
super-classe, qui à son tour est également disponible seulement ICS. Heureusement, vous pouvez presque littéralement copier-coller (voir tout en bas de cette réponse) que de la classe et de construire votre propreTogglePreference
(appelons-il que, par souci de clarté) sur le dessus de cela, à l'aide de laSwitchPreference
mise en œuvre en tant que guide.Ce que vous obtiendrez en faisant cela, c'est quelque chose comme ci-dessous. J'ai ajouté quelques explications pour chaque méthode afin que je puisse limite de mon écriture ici.
TogglePreference.java
Le fichier de mise en page pour cet exemple est tout simplement un
LinearLayout
avec trois éléments, avec la plus intéressante étant laToggleButton
. LeImageView
etTextView
tirer parti des travaux de laPreference
de la classe de base déjà fait par le moyen de l'id dans l'Android de l'espace de noms. De cette façon, nous n'avons pas à vous soucier de ceux-ci. Notez que je suis assez sûr que l'icône de l'option n'a pas été ajoutés jusqu'au Nid d'abeilles, de sorte que vous pourriez vouloir ajouter un attribut personnalisé à laTogglePreference
manuellement et de le configurer de sorte qu'il est toujours là. Glissez-moi un commentaire si vous avez besoin de plus de béton pointeurs pour cette approche.De toute façon, évidemment, vous pouvez modifier la mise en page pour toutes les étendre, et appliquer un style à votre goût. Par exemple, pour avoir le
ToggleButton
imiter unSwitch
, vous pouvez modifier l'arrière-plan à un autreStateListDrawable
et/ou de changer ou de vous débarrasser complètement de la sur/hors texte.toggle_preference_layout.xml
Vous pouvez ensuite utiliser
TogglePreference
juste comme n'importe quel autrePreference
dans votrePreferenceActivity
. En raccordant un écouteur, vous pouvez faire ce que vous voulez lorsque l'utilisateur sélectionne la préférence, tandis que dans le même temps en cliquant sur le réelToggleButton
permet de basculer entre la valeur booléenne dans leSharedPreferences
.DemoPreferenceActivity.java
Prefs.xml n'est rien de plus mais une simple définition de la ci-dessus
TogglePreference
. Vous pouvez fournir tous les attributs habituels dans Android de l'espace de noms. En option vous pouvez également déclarer certains attributs personnalisés pour exploiter la fonctionnalité intégrée deTwoStatePreference
à traiter avec lasummaryOn
etsummaryOff
textes.Prefs.xml
Enfin, le rétroportage TwoStatePreference classe à partir d'ICS. C'est à peine différent de celui d'origine, pour lequel vous pouvez trouver la source overhere.
Pas certain si c'est un bouton à bascule, mais si c'est que vous pouvez juste dire android:textOn ou android:textoff sur .xml. Si c'est sur le java partie de son probablement juste quelque chose comme setTextOnNot certain si c'est un bouton à bascule, mais si c'est que vous pouvez juste dire android:textOn ou android:textoff sur .xml. Si c'est sur le java partie de son probablement juste quelque chose comme toggleButton.setChecked.
Je ne suis pas sûr quel est le problème que vous avez couru dans, je viens de créer un mannequin de vue comme quoi vous faites allusion et je ne vois pas de problème
Vous pouvez utiliser ce code xml dans votre pref fichier xml
et vous pouvez utiliser une case à cocher au lieu togglebutton avec ce code :
si vous ne souhaitez pas utiliser la case à cocher, vous pouvez utiliser ce code :
Simplement utiliser
SwitchPreference
ressemble à ça (juste un exemple de partir de mon application, ne prennent pas la peine sur les autres préf.)