2013-05-29 3 views
10

Wie kann ich eine ListView mit fester Kopf- und Fußzeile erstellen?Android ListView mit fester Kopfzeile und Fußzeile

Ich möchte nicht die Kopf-/Fußzeile mit den Elementen in der ListView scrollen.

Ist es möglich, dass die Kopf-/Fußzeile über die ListView schwebt, so dass die Kopf-/Fußzeile keinen geraden unteren/oberen Hintergrund haben muss und die ListView Elemente unterhalb des Hintergrunds der Kopf-/Fußzeilenansicht scrollt, aber immer noch zeige das erste Element der Liste?

Antwort

14

Ich löste es durch @blackbelt Vorschlag verwenden und einen kleinen Image mit dem Quellbild mit einer Kachel Hintergrund ist transparent.

<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> 

Screenshot von Gerät enter image description here

7

Verwenden Sie eine LinearLayout, fügen Sie Ihre Kopfzeile auf der ListView und der Fußzeile oben. Gibt die ListView layout_weight="1"

+1

Das funktionierte und passt ohne viel Änderungen in mein lineares Layout. Danke – Veeru

1

Machen Sie die Kopf- und Fußzeile separate Ansichten, die Sie über den oberen und unteren Rand des ListView finden. Stellen Sie dann die Deckkraft für diese Ansichten ein.

-1

Erstellen Sie Ihre eigene Ansicht mit Linearlayout und Listview

11

http://developer.android.com/reference/android/widget/ListView.html#addHeaderView%28android.view.View%29. Überprüfen Sie dies für addHeaderView (param).

http://developer.android.com/reference/android/widget/ListView.html#addFooterView%28android.view.View%29. Überprüfen Sie dies für addFooterView (param).

Beispiel des Verfahrens usuage durch ein Layout @Android listview with header and footer buttons

inlfating Sie addHeaderView und addFooterView für die Liste Kopf- und Fußzeile hinzufügen können.

Sie können tun, was @blackbelt vorgeschlagen. Ich habe ein relatives Layout anstelle von LinearLayout verwendet.

<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> 

grafisches Layout Schnappschuss

enter image description here

+0

Das funktioniert gut. Ich habe diese Lösung verwendet, aber ein transparentes ImageView mit einem Kachelhintergrund für den Sägezahneffekt unterhalb und oberhalb der Kopf-/Fußzeile hinzugefügt. – Goran

+0

@Goran Bitte markieren Sie die Antwort, indem Sie einmal auf das Häkchen klicken, wenn es hilft. Es wird andere hopfen, die die Post besuchen – Raghunandan

1

Ihre individuelle Kopf- und Fußzeilen mit Ihrer Liste Ansicht Code erstellen, wie unten

header.xml Datei

<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> 

Fußzeile .XML-Datei

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

Add wo Ihre 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); 
+0

Große Lösung. Vielen Dank. – confile

0

wir Kopf- und Fußzeile auf diese Weise einstellen kann auch, ich bin Einstellung Header Layout oben Listenansicht und in gleicher Weise wir Dosen et Fußzeile unten 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" />