41 votes

Comment afficher un bouton à la fin d'une liste Android

Je souhaite afficher un bouton à la fin d'une vue de liste Android. Comment puis-je atteindre cet objectif?

Je ne veux pas le coller au bas de l'activité en utilisant alignparentbottom="true" . L'utilisation de layout_below ne fonctionne pas non plus pour moi.

Mon XML actuel:

 <?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/main_bg">

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <ListView
            android:id="@+id/android:list"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:drawSelectorOnTop="false"
            android:cacheColorHint="#ff6a00"
            android:divider="#ff8f40"
            android:dividerHeight="1px" />

    </LinearLayout>

    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
            android:layout_height="50sp"
        android:background="#676767"
        android:orientation="vertical">

        <Button
            android:layout_width="100px"
            android:layout_height="wrap_content"
            android:id="@+id/btnGetMoreResults"
            android:layout_marginLeft="10px"
            android:text="Get more" />

    </RelativeLayout>

</RelativeLayout>
 

74voto

dtmilano Points 26472

Vous pouvez utiliser ListView # addFooterView () pour ajouter un View au bas du ListView .

34voto

Sachin Gurnani Points 2025

Je le fais comme ce bouton fixe en bas de l'écran

    <RelativeLayout
    android:id="@+id/relativeLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ListView
        android:id="@+id/listView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@+id/btn_New" >
    </ListView>

    <Button
        android:id="@+id/btn_New"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_marginBottom="20dp"
        android:text="@string/New"
        android:width="170dp"
        android:layout_alignParentBottom="true" />
</RelativeLayout>
 

si vous utilisez linearLayout, affectez android: layout_weight = "1" à la liste et n'attribuez pas de poids au bouton, cela fonctionne

15voto

Pablo Johnson Points 397

Vous pourriez faire quelque chose comme ça:

 final Button btnAddMore = new Button(this);
btnAddMore.setText(R.string.art_btn_moreIssues);
exArticlesList = (ExpandableListView) this.findViewById(R.id.art_list_exlist);
exArticlesList.addFooterView(btnAddMore);
 

7voto

skyman Points 1293

1 Si vous souhaitez ajouter une Touche comme le dernier élément de la vue de liste

Vous devez créer personnalisé ListAdapter pour votre ListView qui permettra de créer une vue avec un Bouton dans la méthode getView. Vous devez décider comment retourner votre vue personnalisée pour le dernier élément, vous pouvez coder en dur (élément return count +1 dans la méthode getCount et retour affichage personnalisé dans getView quand la position > élément de comptage) ou vous pouvez ajouter un élément à la structure, vous serez en prenant les données (Tableau, un Curseur, etc.) et de vérifier si le champ de l'élément certaine valeur

2 Si vous voulez ajouter un élément au-dessous de la vue liste

Vous devez utiliser la version d'android:layout_width attribut et de faire ListView et "vide" TextView (vous devriez l'utiliser pour montrer aux utilisateurs que la liste est vide et le rendu de l'Affichage est terminé) layout_weight plus de boutons layout_weight

Vérifiez la façon dont c'est fait dans Transdroids de l'Activité de recherche http://code.google.com/p/transdroid/source/browse/trunk/res/layout/search.xml

6voto

SAndroidD Points 102

Utilisez la vue Pied de page pour afficher la liste de son fonctionnement.

list_layout.xml:

 <LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="false"
        android:cacheColorHint="#ff6a00"
        android:divider="#ff8f40"
        android:dividerHeight="1px" />

</LinearLayout>
 

footerview.xml:

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
    <Button
        android:layout_width="100px"
        android:layout_height="wrap_content"
        android:id="@+id/btnGetMoreResults"
        android:layout_marginLeft="10px"
        android:text="Get more" />
</FrameLayout>
 

et dans Activity.java

     list=(ListView)findViewById(R.id.list);

    FrameLayout footerLayout = (FrameLayout) getLayoutInflater().inflate(R.layout.footerview,null);
    btnPostYourEnquiry = (Button) footerLayout.findViewById(R.id.btnGetMoreResults);

    list.addFooterView(footerLayout);
 

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