Android ListActivity - fixed header and footer

后端 未结 3 1706
时光说笑
时光说笑 2021-01-02 21:58

Is it possible to set header and footer at ListActivity to be fixed at the top and the bottom, so only the content (list) is scrolling, not also header and footer?

I

相关标签:
3条回答
  • 2021-01-02 22:14

    You can do it this way given below:

        //your adapter for listview
        mAdapter = new ToDoListAdapter(getApplicationContext());
    
        // Put divider between ToDoItems and FooterView
        getListView().setFooterDividersEnabled(true);
    
        // TODO - Inflate footerView for footer_view.xml file
        LayoutInflater layoutInflater = getLayoutInflater();
    
        //text view or whatever you have for your footer
        TextView footerView = null;
        footerView=(TextView)layoutInflater.inflate(R.layout.footer_view,null);
    
        // TODO - Add footerView to ListView
    
        getListView().addFooterView(footerView);
        getListView().setAdapter(mAdapter);
    

    This is inside of your onCreate() method. It worked for me. give comments if you find any bugs here

    0 讨论(0)
  • 2021-01-02 22:18

    According to project scenario, this methodology would be better than any other approach, because if you want to customize the header and footer, you can make changes in appropriate header and footer layout. In your layout xml file follow this :

    In main.xml

     <?xml version="1.0" encoding="utf-8"?>
     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >
    
       <include
            android:id="@+id/header_layout"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            layout="@layout/header.xml" />
    
       <ListView
            android:id="@+id/list_view"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:below="@id/header_layout"
            android:above="@id/footer_layout" />
    
        <include
            android:id="@+id/footer_layout"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            layout="@layout/footer.xml" />
     </RelativeLayout>
    

    In header.xml

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:orientation="vertical" >
    
        <TextView
               android:id="@+id/header_text_view"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content" 
               android:text="Your Application Title"/>
       </LinearLayout>
    

    In footer.xml

      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:orientation="vertical" >
    
         <Button
               android:id="@+id/done_button"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content" 
               android:text="Done"/>
       </LinearLayout>
    

    In Activity, Here

      public class MainActivity extends ListActivity {
    
       private ListView mListView;
       @Override
       protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            mListView = (ListView) findViewById(R.id.list_view);
            // Now you can do whatever you want
    
       }
     }
    
    0 讨论(0)
  • 2021-01-02 22:30

    You can achieve it by using a custom XML layout in which you will set the layout of your header, footer and list.

    Note that to be compatible with ListActivity this layout must contain a ListView with the id android.R.id.list:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="HEADER" />
    
        <ListView
            android:id="@android:id/list"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="FOOTER" />
    
    </LinearLayout>
    

    And set it in your ListActivity like this:

    public class TestActivity extends ListActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        }
    }
    
    0 讨论(0)
提交回复
热议问题