web-dev-qa-db-ja.com

Android ListView with fixed header and footer

ヘッダーとフッターを固定したListViewを作成するにはどうすればよいですか?

ヘッダー/フッターをListViewのアイテムと共にスクロールしたくない。

ヘッダー/フッターがListViewの上に浮いている可能性はありますか?ヘッダー/フッターの背景が真っ直ぐ/上である必要はなく、ListViewアイテムはヘッダーの背景の下にスクロールします/ footerビュー、それでもリストの最初の要素を表示しますか?

12
Goran

私は、@ blackbeltの提案と、タイルの背景で透明なソース画像の小さなImageViewを使用して解決しました。

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

デバイスのスクリーンショット enter image description here

14
Goran

http://developer.Android.com/reference/Android/widget/ListView.html#addHeaderView%28Android.view.View%29 。 addHeaderView(param)については、これを確認してください。

http://developer.Android.com/reference/Android/widget/ListView.html#addFooterView%28Android.view.View%29 。 addFooterView(param)を確認してください。

レイアウト@をインフレートすることによるメソッドの使用例 ヘッダーとフッターのボタンを含むAndroidリストビュー

リストにaddHeaderViewおよびaddFooterViewを使用して、ヘッダーとフッターを追加できます。

@blackbeltの提案どおりに実行できます。 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>

グラフィカルレイアウトスナップショット

enter image description here

11
Raghunandan

LinearLayoutを使用し、ListViewと上のフッターにヘッダーを追加します。 ListView layout_weight="1"

7
Blackbelt

以下のリストビューコードを使用してカスタムヘッダーとフッターを作成します

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>

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>

リストビューに追加

 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

ListViewの上部と下部にあるヘッダーとフッターを別々のビューにします。次に、それらのビューの不透明度を設定します。

1
ThaMe90

この方法でもヘッダーとフッターを設定できます。リストビューの上にヘッダーレイアウトを設定し、リストビューの下にフッターを設定できます。

<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