web-dev-qa-db-fra.com

Android ListView avec en-tête et pied de page fixes

Comment créer une ListView avec un en-tête et un pied de page fixes? 

Je ne veux pas que l'en-tête/le pied de page défile avec les éléments de la variable ListView

Est-il possible que l'en-tête/pied de page flotte au-dessus de la ListView afin que l'en-tête/le pied de page n'ait pas besoin d'avoir un arrière-plan inférieur/supérieur droit et que les éléments ListView défilent en dessous de l'arrière-plan de la vue d'en-tête/pied de page, tout en affichant le premier de la liste?

11
Goran

Je l'ai résolu en utilisant la suggestion @blackbelt et un petit ImageView, l'image source étant transparente avec un fond de mosaïque.

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:gravity="center"
Android:orientation="vertical" >

<ListView
Android:id="@+id/lv"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentLeft="true"
  Android:layout_above="@+id/tv_footer"
Android:layout_below="@+id/tv_header" />

<TextView
Android:id="@+id/tv_footer"
Android:layout_width="fill_parent"
Android:layout_height="40dp"
Android:layout_alignParentBottom="true"
Android:layout_centerHorizontal="true"
Android:background="@drawable/footer_bg"
Android:gravity="center"
Android:text="Footer" />

<TextView
Android:id="@+id/tv_header"
Android:layout_width="fill_parent"
Android:layout_height="40dp"
Android:layout_alignParentTop="true"
Android:layout_centerHorizontal="true"
Android:background="@drawable/header_bg"
Android:gravity="center"
Android:orientation="vertical"
Android:text="Header" />

<ImageView
Android:id="@+id/iconView"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentLeft="true"
Android:layout_alignParentTop="true"
Android:src="@drawable/ic_launcher" />

<ImageView
Android:id="@+id/imageView2"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_alignParentLeft="true"
Android:layout_alignTop="@+id/lv"
Android:background="@drawable/header_bg2"
Android:src="@drawable/transparant_bg_tile" />

<ImageView
Android:id="@+id/imageView1"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_above="@+id/tv_footer"
Android:layout_alignParentRight="true"
Android:background="@drawable/footer_bg2"
Android:src="@drawable/transparant_bg_tile" />

</RelativeLayout>

Capture d'écran de l'appareil enter image description here

14
Goran

http://developer.Android.com/reference/Android/widget/ListView.html#addHeaderView%28Android.view.View%29 . Vérifiez ceci pour addHeaderView (param).

http://developer.Android.com/reference/Android/widget/ListView.html#addFooterView%28Android.view.View%29 . Cochez ceci pour addFooterView (param).

Exemple d'utilisation de la méthode en incorporant une mise en page @ Listview Android avec boutons d'en-tête et de pied de page

Vous pouvez utiliser addHeaderView et addFooterView pour que la liste ajoute un en-tête et un pied de page.

Vous pouvez faire ce que @blackbelt a suggéré. J'ai utilisé une disposition relative au lieu de LinearLayout. 

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:gravity="center"
Android:orientation="vertical" >

<ListView
    Android:id="@+id/lv"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_alignParentLeft="true"
      Android:layout_above="@+id/textView1"
    Android:layout_below="@+id/tv1" />

<TextView
    Android:id="@+id/textView1"
    Android:layout_width="fill_parent"
    Android:layout_height="40dp"
    Android:gravity="center"
    Android:layout_centerHorizontal="true"
    Android:layout_alignParentBottom="true"
    Android:text="Footer" />

<TextView
    Android:id="@+id/tv1"
    Android:layout_width="fill_parent"
    Android:layout_height="40dp"
    Android:gravity="center"
    Android:layout_alignParentTop="true"
    Android:orientation="vertical"
    Android:layout_centerHorizontal="true"
    Android:text="Header" />

</RelativeLayout>

Mise en page graphique

enter image description here

11
Raghunandan

Utilisez une LinearLayout, ajoutez votre en-tête sur la ListView et le pied de page ci-dessus. Donne le ListView layout_weight="1"

7
Blackbelt

créez votre en-tête et votre pied de page personnalisés avec le code de vue liste ci-dessous

fichier header.xml  

 <RelativeLayout 
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content">

        <TextView      
            Android:layout_width="match_parent"
            Android:layout_height="your custom height" // you may set default too
          />

    </RelativeLayout>

fichier footer.xml

 <RelativeLayout 
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content" >
        <Button 
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"/>
    </RelativeLayout>

ajouter où votre listview

 LayoutInflater inflaterHeader = getLayoutInflater();
    ViewGroup header = (ViewGroup) inflaterFooter.inflate(
                    R.layout.header, list_view, false);
    yourListView.addHeaderView(header);

    LayoutInflater inflaterFooter = getLayoutInflater();
            ViewGroup footer = (ViewGroup) inflaterFooter.inflate(
                    R.layout.footer, list_view, false);
    yourListView.addFooterView(footer);
1
Arpan24x7

Faites en-tête et pied de page des vues séparées que vous localisez en haut et en bas de la vue liste. Puis définissez l'opacité pour ces vues.

1
ThaMe90

nous pouvons définir l’en-tête et le pied de page de cette manière également, j’établis la disposition de l’en-tête au-dessus de listview et de la même manière nous pouvons et le pied de page ci-dessous à listview

<LinearLayout
        Android:id="@+id/ly_header"
        Android:layout_width="match_parent"
        Android:layout_height="50dp"
        Android:background="@color/app_theme_color"
        Android:orientation="horizontal">
        <include layout="@layout/header_icuc"/>
    </LinearLayout>

    <ListView
        Android:id="@+id/lv_contacts"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:layout_below="@+id/ly_header"
        Android:background="#F3F4F6"
        Android:divider="@drawable/contact_list_divider"
        Android:dividerHeight="2dp"
        Android:scrollbars="none" />
1
Puneet Kumar