2011-08-02 10 views
9

Mam ListView, który może zawierać dowolną liczbę elementów. Kiedy używa mniej niż cała wysokość ekranu, chcę pokazać stopkę, która wypełnia pozostałą przestrzeń.Jak ustawić stopkę rozciągającą ListView, aby wypełnić pozostałe miejsce?

Stopka to tylko kafelkowy obraz. Nie mogę ustawić go jako tła ListView lub jego kontenera, ponieważ elementy listy są częściowo przezroczyste i muszą być głównym tłem, a nie stopą widoczną za ich pośrednictwem.

Dodawanie widoku stopki działa prawidłowo, jeśli stopka ma stałą wysokość, ale jeśli stała wysokość jest większa od pozostałej wysokości, wówczas ListView przewija niepotrzebnie.

Tworzenie widoku stopki fill_parent wydaje się nie mieć żadnego efektu, jest po prostu niewidoczne.

Umieszczenie widoku stopki w układzie nadrzędnym również nie ma wpływu, ponieważ ListView wydaje się wypełniać całą wysokość, chyba że ma przypisaną stałą wartość layout_height.

Czy to możliwe?

+0

Przepraszam wszystkich, którzy odpowiedzieli, nie zauważyłem, że ListView znajduje się wewnątrz ListFragment, co wydaje się być przyczyną niedziałających rozwiązań dla layoutu nadrzędnego. Zmieniłem go na normalny fragment i jawnie ustawiłem ListView, używając wagi teraz działa. Dziękuję za Twój wysiłek! – Ouchdroid

+0

cześć, jestem ciekawy z twoim rozwiązaniem .. w którym układzie umieściłeś wagę? widok listy lub elementu listy? – akhyar

Odpowiedz

1

Spróbuj ustawić masę układu do jednego, lub sprawdzić próbując widok scalania: http://android-developers.blogspot.com/2009/03/android-layout-tricks-3-optimize-by.html

+0

ListView zajmuje cały rodzic nawet z innym elementem o wadze 1. Nie mogę scalić stopki z ListView (AdapterView nie obsługuje addView) i połączenie go z rodzicem wydaje się mieć taki sam efekt jak umieszczenie go bezpośrednio do obiektu nadrzędnego (wypełnia całą przestrzeń za pomocą fill_parent, inaczej nie zostanie wyświetlona). – Ouchdroid

+0

Czy dynamicznie tworzysz ten listview, czy też nadmuchujesz go z layoutu? – Noah

+0

Tworzę go dynamicznie. – Ouchdroid

1

Umieść ListView wewnątrz innego UKŁAD Określenie rozwiń, aby wypełnić ekran.

LinearLayout działa najlepiej w tym zakresie.

coś takiego:

<LinearLayout android:layout_height="match_parent" 
      android:layout_width="match_parent" > 
    <ListView android:layout_height="match_parent" 
       android:layout_width="match_parent" > 
     ... 
    </ListView> 
</LinearLayout> 

ta powinna wypełnić LinearLayout na dole ekranu. Tego zachowania można użyć do kontrolowania wyglądu widoku.

Mam nadzieję, że to pomoże!

+0

Umieszczenie widoku przewiniętego w innym widoku przewijającym się, tj. 'ListView' wewnątrz' ScrollView' nie jest dobrym pomysłem. – Squonk

+0

Dobrze, zmieniłem odpowiedź, aby to odzwierciedlić. – Codeman

+0

Próbowałem tego. ListView zajmuje całą dostępną przestrzeń, jeśli nie daję jej stałej wysokości, nawet przy użyciu wagi (co ma sens, dlatego próbuję wykonać pracę z podejściem stopki). – Ouchdroid

0

Spróbuj i powiedz mi, czy to działa:

  • Put układ dwóch osób w jednym z rodziców (na przykład: układ liniowy)
  • Dla ListView: android:layout_hight="wrap_content"
  • Na stopce: android:layout_hight="fill_parent"
+0

ListView wydaje się zawsze używać fill_parent jeśli naprawiono Wysokość nie jest określona, ​​wrap_content nie ma żadnego efektu (co ma sens, dlatego próbuję ustawić podejście stopki). – Ouchdroid

Powiązane problemy