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?
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
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
Utilisez une LinearLayout
, ajoutez votre en-tête sur la ListView
et le pied de page ci-dessus. Donne le ListView layout_weight="1"
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);
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.
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" />