2010-09-02 13 views
19

Próbuję podzielić stronę na trzy części. Chciałbym to zrobić w wartościach procentowych, ale nie jest to obsługiwane przez Androida. Zamiast tego muszę użyć android:layout_weight. Ale trudno mi to zrozumieć i poprawić. Zwłaszcza, jak oblicza się rzeczywisty rozmiar. Czy istnieje sposób na uzyskanie wartości procentowej (0,100%) z poziomu android:layout_weight?Android: próbując zrozumieć Androida: layout_weight

Przeanalizowałem kilka przypadków (patrz załączony zrzut ekranu), aby opisać problemy. Kolorowe pola są <LinearLayout> z android:layout_height="fill_parent", ponieważ chcę, aby pełny ekran został podzielony między te.

Case 1

alt text

Ok, proste. Co <LinearLayout> dostaje 33%.

Case 2

alt text

Ups ?! Pierwszy (żółty) <LinearLayout> znika całkowicie? Czemu?

Case 3

alt text

Confused ponownie. Żółte <LinearLayout> powróciło. Jednak dwa pierwsze <LinearLayout> z cięższą wagą stają się mniejsze? Co się dzieje?

Case 4

alt text

mam absolutnie żadnego pojęcia, co matematyka za to wszystko.

Odpowiedz

25

Czy istnieje sposób na uzyskanie wartości procentowej (0,100%) z systemu Android: layout_weight?

Pewnie. Dodać do 100.

Dla "wartości procentowej", chcesz android:layout_height poszczególnych pozycji w LinearLayout być 0px.

+8

Mark, zrobiłeś mój dzień. Nie możesz uwierzyć, ile czasu już spędziłem, próbując rozgryźć dziwne sprawy. I proste 'android: layout_height =" 0px "' rozwiązuje wszystko :-) – znq

+1

Ustawienie width_ layoutu na "fill_parent" i layout_weight na wartość zmiennoprzecinkową jak "0.2", "0.75" również działa, w tym przypadku im mniejsza liczba, tym większy część przestrzeni zajmowanej przez element. Czy mógłbyś powiedzieć, czy jest to akceptowalny sposób robienia tego? – Yar

8

Podczas korzystania z Androida: layout_height = "fill_parent" dla barów, nie pozostawiasz wolnego miejsca. (Ponieważ wypełniają one rodzica.) Ponieważ wszystkie 3 są ustawione do wypełnienia, żądana wysokość jest w rzeczywistości równa 3x wysokości nadrzędnej, więc wagi są stosowane do ujemnej pozostałej przestrzeni. To tłumaczy dziwne zachowanie, które widzisz i dlaczego ustawienie layout_height na 0px rozwiązuje problem.

+0

Link nie działa. Czy Twój post na blogu jest dostępny gdzie indziej? –