ヘッダーとフッターを固定したListView
を作成するにはどうすればよいですか?
ヘッダー/フッターをListView
のアイテムと共にスクロールしたくない。
ヘッダー/フッターがListView
の上に浮いている可能性はありますか?ヘッダー/フッターの背景が真っ直ぐ/上である必要はなく、ListView
アイテムはヘッダーの背景の下にスクロールします/ footerビュー、それでもリストの最初の要素を表示しますか?
私は、@ 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>
デバイスのスクリーンショット
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>
グラフィカルレイアウトスナップショット
LinearLayout
を使用し、ListView
と上のフッターにヘッダーを追加します。 ListView layout_weight="1"
以下のリストビューコードを使用してカスタムヘッダーとフッターを作成します
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);
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" />