Android – Wielowarstwowe Layout’y
Podczas tworzenia części odpowiedzialnej za wyszukiwanie przystanków w autobuserze miałem problem z widgetem to wpisywania punktów początku i końca trasy. Miało to dzaiłać w ten spozób, że po uruchomieniu Activity szukania trasy, jesli nie ma insformacji o początku i końcu z innych źródeł (w przyszłości chciałbym zrobić wywoływanie z Google Maps) pojawia się panel podobny do tego w przeglądarce (wpisywanie adresu) do wprowadzenia punktów.
Pierwszym rozwiązaniem jakie mi wpadło do głowy był AlertDialog.Builder ze specjalnym View zawierającym AutoCompleteTextView podpowidające nazwy przystanków i kontaktów. Jednak pojawił sie problem, ponieważ lista pojawiająca się pod AutoCompleteTextView była „docinana” do krawędzi AlertDialog’u…
Drugim rozwiazaniem było nowe Activity dosuniete do dolnej krawędzi ekranu tak, żeby móc zobaczyć wynik poprzedniego wyszukania. w AndroidManifest.xml ustawiłem android:style=”@ android:style/Theme.Translucent” i wszysko wyglądało bardzo dobrze ale strasznie długo się uruchamiało.
Do trzech razy sztuka…
W końcu po przerzuceniu kilkudziesięciu tematów na grupie dyskusyjnej i kolejnuch n stron znalazłem to -> http://android-developers.blogspot.com/2009/03/android-layout-tricks-3-optimize-by.html
Sztuczka polega na zastosowaniu merge. Pozwala on na wrzucenie kilku Layout’ów i niezależne ustawienie ich pozycji oraz wymiarów (głównie chodzi o fill_parent). Normalny Layout ustawia wszystkie elementy tak jakby na jednej płaszczyźnie i dostosowuje ich wymiary do siebie. Merge pozwala na ustawienie obiektów jeden na drugim bez żadnych problemów z porozsuwaniem się Layout’u.
Komentarze (0)