Je suis assez nouveau dans le développement Android et je viens de tomber sur les préférences. J'ai trouvé PreferenceScreen
et je voulais créer une fonctionnalité de connexion avec. Le seul problème que j'ai est que je ne sais pas comment je pourrais ajouter un bouton "Connexion" au fichier PreferenceScreen
.
Voici à quoi mon PreferenceScreen
ressemble:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
...
<PreferenceScreen android:title="@string/login" android:key="Login">
<EditTextPreference android:persistent="true" android:title="@string/username" android:key="Username"></EditTextPreference>
<EditTextPreference android:title="@string/password" android:persistent="true" android:password="true" android:key="Password"></EditTextPreference>
</PreferenceScreen>
...
</PreferenceScreen>
Le bouton devrait être juste sous les deux EditTextPreference
s.
Existe-t-il une solution simple à ce problème? La seule solution que j'ai trouvée ne fonctionnait pas car j'utilise des sous- PreferenceScreen
s.
Mettre à jour:
J'ai compris que je pouvais ajouter des boutons de cette façon:
<PreferenceScreen android:title="@string/login" android:key="Login">
<EditTextPreference android:persistent="true" android:title="@string/username" android:key="Username"></EditTextPreference>
<EditTextPreference android:title="@string/password" android:persistent="true" android:password="true" android:key="Password"></EditTextPreference>
<Preference android:layout="@layout/loginButtons" android:key="loginButtons"></Preference>
</PreferenceScreen>
et le fichier de mise en page ( loginButtons.xml
) ressemble à ceci:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:weightSum="10"
android:baselineAligned="false" android:orientation="horizontal">
<Button android:text="Login" android:layout_width="fill_parent"
android:layout_weight="5" android:layout_height="wrap_content"
android:id="@+id/loginButton" android:layout_gravity="left"></Button>
<Button android:text="Password?" android:layout_width="fill_parent"
android:layout_weight="5" android:layout_height="wrap_content"
android:id="@+id/forgottenPasswordButton"></Button>
</LinearLayout>
Alors maintenant, les boutons apparaissent mais je ne peux pas y accéder dans le code. Je l'ai essayé avec findViewById()
mais cela retourne null. Des idées sur la façon dont je pourrais accéder à ces boutons?
la source
android:onClick="method"
à chaque bouton, où la méthode est définie dans l'activité commepublic void method(View v)
.Réponses:
Pour le xml:
Ensuite, pour le java dans votre
onCreate()
Cela apparaîtra comme une préférence normale, avec juste un titre et un résumé, donc il semblera qu'il appartient.
Edit: J'ai changé pour utiliser
@string/myCoolButton
etgetString(R.string.myCoolButton)
parce qu'il est préférable d'utiliser des ressources pour l'assistance du compilateur, la traduction de la langue et la facilité des changements de chaîne.la source
android:key="key"
etfindPreference("key");
utilisez la même clé.Je suppose qu'il est trop tard. C'est ce que j'ai fait pour une préférence de bouton.
La préférence dans le fichier preferences.xml dans le dossier xml
et pref_reset_bd_button.xml dans le dossier layout
la source
android:widgetLayout
est la connexion parfaite entre les fragments et les préférences (l'une ou les deux définies en XML). Merci beaucoup. IciJe voulais ajouter un lien de sortie aux préférences et j'ai pu modifier le code de Jakar pour qu'il fonctionne comme ceci:
À l'origine, la «préférence» était un «EditTextPreference» que j'ai édité à la main.
Puis dans la classe:
la source
Ajouter
Au dessous de
disposition des boutons:
Bouton d'accès par:
Vous pouvez obtenir le bouton en haut ou en bas de l'écran en mettant le bouton dans RelativeLayout:
bottom_control_bar
Cela a fonctionné pour moi. J'espère pouvoir aider quelqu'un avec ce morceau de code.
la source
Je ne pense pas qu'il existe un moyen facile d'ajouter simplement un bouton à un écran de préférences. Les préférences sont limitées à:
Lorsque vous utilisez un écran de préférence, vous êtes limité à l'utilisation de ces options, et il n'y a pas de "préférence de bouton" unique qui pourrait être facilement utilisée pour vos besoins.
J'ai recherché des fonctionnalités similaires, avec l'ajout de boutons à l'écran des préférences, mais il semble que vous deviez créer votre propre écran pour cela, en gérant le changement des préférences dans votre propre implémentation.
la source
Vous pouvez le faire comme ceci pour accéder au bouton!
N'oubliez pas d'ajouter
android:id
au LinearLayout qui contient le bouton dans layoutButtons.xml , ieandroid:id="@+id/mylayout"
la source
Vous pouvez également personnaliser la mise en page d'une préférence en la remplaçant
Preference.onCreateView(parent)
. L'exemple ci-dessous utilise une classe interne anonyme pour créer des préférences rouges.Vous pouvez utiliser cette technique pour ajouter un bouton à la vue par défaut.
la source
Si quelqu'un vient demander à l'utilisateur de cliquer sur l'un des éléments et des poignées de préférences sur lesquels vous cliquez et sur lequel votre solution est basée
PreferenceFragmentCompat
, vous pouvez le faire:Java:
Kotlin:
la source
Créez une mise en page personnalisée pour l'
SettingsFragment.java
IElayout_settings.xml
Ensuite, reportez-vous au fichier de mise en page dans votre
styles.xml
:Et puis, dans la
onViewCreated()
méthode de votreSettingsFragment.java
, vous pouvez utiliser le bouton comme ceci:la source
essayez android: onClick = "myMethod" fonctionne comme un charme pour les événements onclick simples
la source
Preference
n'a pas deonClick
propriétéandroid:onClick
dans la vue des boutons attachée, pas dans la préférence elle-même.