2013-08-16 23 views
13

Ho un ListView con un piè di pagina aggiunta con listview.addFooterView(footerView);Listview - Piè di pagina nella parte inferiore dello schermo

Tutte le opere come previsto eccettuato in un caso: quando gli elementi di mia ListView non riempire l'intero schermo, vorrei che la piè di pagina per essere nella parte inferiore dello schermo, invece di essere nel mezzo. C'è un modo per farlo facilmente? O dovrei cambiare il mio layout?

Grazie

EDIT: che potrebbe aiutare (questo è quello che voglio) enter image description here

+0

Suona come si può decidere di rendere la vista piè di pagina di un SEPAR mangiato vista ancorata alla parte inferiore dello schermo, piuttosto che come un figlio di 'ListView'. In questo modo, tuttavia, la vista footer non scorrerà più fuori campo quando ci sono molti elementi in "ListView". Invece, sarà sempre visibile in basso. –

+0

Sì, l'ho già fatto ma non è quello che mi aspetto –

risposta

7

Se si vuole che sia sempre nella parte inferiore dello schermo, non importa quanto tempo il vostro ListView è, quindi sbarazzarsi di listview.addFooterView(footerView); e utilizzare una RelativeLayout. Give your ListView` la proprietà

android:layout_alignParentTop="true" 

e dare la proprietà al footer

android:layout_alignParentBottom="true" 

Se questo non risolve il problema, si prega di essere un po 'più specifici su ciò che si desidera e fornire un'immagine di ciò che si desidera, se possibile.

Modifica

Dopo aver letto i commenti che questo potrebbe funzionare. Ci potrebbe essere un modo più semplice, ma si poteva fare qualcosa di simile

 listView.post(new Runnable() 
    {  
     public void run() 
     { 
      int numItemsVisible = listView.getLastVisiblePosition() - 
      listView.getFirstVisiblePosition(); 
      if (itemsAdapter.getCount() - 1 > numItemsVisible) 
      { 
       // set your footer on the ListView 
      } 
      else 
      { 
       footerView.setVisibility(View.VISIBLE); 
      } 
     } 

footerView sarebbe un personalizzato layout che si creerebbe con le proprietà che fa riferimento sopra. Questo dovrebbe essere impostato su visible se gli articoli non sono più di quelli che possono essere contenuti sullo schermo. Se sono più di quanto possa andare bene, si applica la vista footer sullo ListView come ora. Questo potrebbe non essere il modo migliore ma è la prima cosa che viene in mente. Dovresti eseguire questo codice appena prima di impostare lo Adapter.

+0

Domanda modificata –

+0

Vuoi solo il piè di pagina visibile se il 'ListView' non occupa l'intero schermo? – codeMagic

+1

Voglio che si trovi nella parte inferiore dello schermo se listview non riempie l'intero schermo. Se riempie l'intero schermo, voglio che il piè di pagina si comporti come un normale piè di lista (piega). –

1

Non è possibile utilizzare il piè di pagina ListView come piè di pagina per l'intero layout. Stai meglio con RelativeLayout come elemento principale per il layout, e poi un figlio diretto di esso contiene la vista piè di pagina con l'attributo: Android: layout_alignParentBottom = "true"

0

Oltre alla risposta @codeMagic, è potrebbe aggiungere un listener per controllare quando l'adattatore viene aggiornato e quindi aggiornare il piè di pagina

registerDataSetObserver(new DataSetObserver() { 
      @Override 
      public void onChanged() { 
       super.onChanged(); 
       updateSmartFooter(); 
      } 
     }); 

dove updateSmartFooter è la funzione che ha descritto

private void updateSmartFooter { 
    listView.post(new Runnable() 
    {  
     public void run() 
     { 
      int numItemsVisible = listView.getLastVisiblePosition() - 
      listView.getFirstVisiblePosition(); 
      if (itemsAdapter.getCount() - 1 > numItemsVisible) 
      { 
       // set your footer on the ListView 
      } 
      else 
      { 
       footerView.setVisibility(View.VISIBLE); 
      } 
     } 
     } 
} 
Problemi correlati