2012-09-08 17 views
6

Chciałbym stworzyć heterogeniczny widget siatki na Androida, taki jak ten używany w aplikacjach takich jak Google+ na tablety lub Pinterest. Nie mogę znaleźć żadnego samouczka i wydaje się to szczególnie trudne.Widget Android siatki na tablety do samouczków tabletu

enter image description here

Niestety GridView może mieć tylko komórki tej samej wielkości, a ja chce osiągnąć różne komórki rozmiarach. Czy możesz wskazać mi jakiś dobry tutorial? Wiem tylko, że muszę przedłużyć AbsListView.

Odpowiedz

0

zależności od zmiennej wysokości pozycje oznaczają, masz kilka opcji:

  1. Jeśli szukasz zrobić GridView z wielu odmian wysokościach (np Pinterest) należy bawić się z StaggeredGridView - o ile wiem, jest to najlepsze rozwiązanie open source.

  2. W obrazu, który pisał, wygląda na to, czy są nadrzędne wiersze o zmiennej dzieci wysokość - jest to nieco łatwiejsze do rozwiązania problemem i może być naśladowane za pomocą regularnych ol”ListView i podklasę BaseAdapter. Zapisanie kodu jest zbyt skomplikowane, aby uzyskać odpowiedź na WR, ale dam ci ogólny opis tego, jak mogę osiągnąć ten efekt.

    • BaseAdapter musi określić szorstki układ każdego wiersza z wyprzedzeniem, tak, że można go zgłosić do ListView ile wierszy będzie to wymagało - trzeba zastąpić getCount().
    • W adapterze można napompować pojedynczy LinearLayout (lub może użyć convertView, jeśli został poddany recyklingowi) i dodać tyle dzieci (ponownie, więcej LinearLayouts), ile będzie trzeba dla szerokości urządzenia (należy wziąć pod uwagę to w czasie wykonywania, chyba że chcesz po prostu utworzyć wersję na telefon i tablet).
    • Każde dziecko LinearLayout dodane do wiersza należy ustawić na waga = 1, tak aby rozciągał się na całą szerokość wiersza nadrzędnego. Na opublikowanym zrzucie ekranu znajdują się 3 kolumny (trzeci identyfikator został odcięty).
    • Każde dziecko LinearLayout właśnie dodane do wiersza reprezentuje kolumnę. Powinieneś ustawić ich orientacje na pionowe, jako że są kolumnami!
    • W każdej kolumnie, jeśli chcesz dodać jedno dziecko, będziesz mieć widok siatki.
    • Jeśli chcesz osiągnąć powyższy efekt, możesz dodać więcej elementów do każdej kolumny.
    • Na przykład w wierszu 1 kolumna 1 ma jedno duże dziecko. Kolumny 2 i 3 w rzędzie 1 mają po 2 dzieci w połowie wysokości.
+0

Używam zmodyfikowanego StaggeredGridView i działa. – Matroska

Powiązane problemy