简体   繁体   中英

How to add a Footer View (TextView) to the end of a ListView?

i am trying to make a layout like this:

actionbar   
==================== 
txtViewTitle
--------------------
listview item1
listview item2
listview item3
........scroll scroll scroll
...at the end of all the items:
-----------------
txtViewFooter
==================
linearlayout of buttons [always visible at the bottom]
-------------------------------

the part between the ==========s should be scrollable

here's my code, it works except for txtViewFooter which is displayed if the list is short enough to accomodate in part of the screen. but not displayed if list is longer and requores scroling

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/d_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<TextView
    android:id="@+id/txtViewTitle"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="8dp"
    android:background="#eeeeee"
    android:gravity="center|center"
    android:layout_alignParentTop="true"
    style="?android:listSeparatorTextViewStyle"/>

<View
    android:layout_width="fill_parent"
    android:layout_height="0.1dp"
    android:layout_below="@+id/txtViewTitle"
    android:id="@+id/separator"
    android:visibility="visible"
    android:background="@android:color/darker_gray"/>

<ListView  
android:layout_height="match_parent"
android:layout_below="@+id/separator"
android:id="@+id/my_list" 
android:listSelector="@android:color/transparent"
android:smoothScrollbar="true"
android:layout_width="fill_parent"
android:background="@android:color/transparent"
    android:textColor="#000000"
    android:dividerHeight="0dp"
    android:cacheColorHint="@android:color/transparent">
</ListView>

<TextView
    android:id="@+id/txtViewFooter"
    android:layout_below="@+id/my_list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="8dp"
    android:textStyle="italic"
    />

<View
android:layout_width="fill_parent"
android:layout_height="0.1dp"
android:layout_above="@+id/bottom_menu"
android:id="@+id/separator2"
android:visibility="visible"
android:background="@android:color/darker_gray"/>

<LinearLayout android:id="@+id/bottom_menu"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"         
    android:orientation="horizontal" 
    android:layout_alignParentBottom="true"
    android:background="#eeeeee">
    <include layout="@layout/footer_menu" />
</LinearLayout>

Use

ListView.addFooterView(View v)

to add a footer to your ListView . You do not need to define the footer in .xml

Example:

TextView tv = new TextView(Context);
tv.setText("I am a footer")

ListView.addFooterView(tv);

Inflate from .xml:

View footer = LayoutInflater.from(Context).inflate(R.layout.your_footer_layout, null);
ListView.addFooterView(footer);

Make sure you add your footer or header View before you add other items to the list.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM