108 votes

Comment ajouter un bouton à PreferenceScreen

Est-il possible d’ajouter un bouton au bas de l’écran Préférences et qu’ils fonctionnent correctement lors du défilement ?

250voto

Max Points 1968

Il y a une autre solution pour la personnalisation de l'apparence de l'écran de préférences.

La conception d'un XML normal de mise en page avec des boutons ou ce que vous voulez ajouter à la norme préférences. Inclure un ListView dans votre mise en page et de lui donner une ID @android:id/list.

Disons que nous appelons le fichier de layout res/layout/main.xml. Il pourrait ressembler à quelque chose comme ceci:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:orientation="vertical">
    <Button android:text="This is a button on top of all preferences."
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    <ListView android:id="@android:id/list"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent" />
</LinearLayout>

Dans votre PreferenceActivity, ajoutez ces deux lignes à votre onCreate:

addPreferencesFromResource(R.xml.preferences);
setContentView(R.layout.main);

L' ListView dans votre mise en page sera ensuite remplacée par les préférences définies de la manière habituelle, en res/xml/preferences.xml.

56voto

jpihl Points 1034

Je sais c’est un peu tard, mais je viens de trouver une solution que j’aime mieux que la solution fait l’éloge de Max.

Vous pouvez simplement ajouter un pied de page (ou si vous voulez le bouton pour être au top, un en-tête) à ListView de la PreferenceActivity comme suit :

J’espère que cela aide quelqu'un.

11voto

Ronnie Points 521

Cet exemple ci-dessous rendra un bouton au bas de la page (dans le cas où quelqu'un est intéressé).

Dans le cas d'un LinearLayout vous pouvez également appliquer des pondérations; ceci est nécessaire car la liste est définie sur *fill_parent*. J'ai l'habitude de le faire en ajoutant *android:layout_weight* 's:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:orientation="vertical">
    <ListView android:id="@android:id/list"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent" android:layout_weight="10"/>
    <Button android:text="This is a button on top of all preferences."
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:layout_weight="1"/>
</LinearLayout>

L'explication ci-dessous n'est pas propbably à 100%, mais il vous aidera à comprendre...

+-- View Port (linear layout)
| +-- List View (this is where the preferences will go)
| |
| |
| +--
+--
  +--
  | Button (which was pushed out of view by the fillparent of ListView
  +--

On pourrait aussi dire que, parce que le Bouton n'a pas de poids; le bouton est rendu à 0dp hauteur.

Maintenant, avec la layout_weigths ajouté ça va lett le bouton de rendu inview

+-- View Port (linear layout)
| +-- List View (this is where the preferences will go)
| |
| |
| +--
| +--
| | Button (which was pushed out of view by the fillparent of ListView
| +--
+--

7voto

Walkor Points 637

En fait, il existe une solution. Voici un code, je l’espère, cela vous sera utile pour n’importe qui. Il ressemble à 3 options et 2 boutons en bas de l’écran, indépendamment de la résolution de l’écran (visait à 240 comme plus bas)

1voto

user507410 Points 338

C’est quoi le code ressemble à l’activité à l’exemple de la ronny. Mon intention était de mettre un menu sur le côté bas de l’écran.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X