Est-il possible d’ajouter un bouton au bas de l’écran Préférences et qu’ils fonctionnent correctement lors du défilement ?
Réponses
Trop de publicités?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
.
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.
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
| +--
+--