MozillaPL.org - polskie centrum Mozilli

Główne menu:

grid + alignment

Projektowanie aplikacji i rozszerzeń opartych na technologiach Mozilla Foundation: XUL, JavaScript, XPCOM, XBL i innych

Moderator: Pomocy?!

grid + alignment

Postautor: elczupi » 29 marca 2004, 09:07

Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040207 Firefox/0.8

Podczas tworzenia stosunkowo prostej formy w XUL'u doszedłem do wniosku, że niezbędne jest zastosowanie elementu grid, aby w miarę sensownie ułozyć komponenty. Problem polega na tym, że elementy nie układają się tak, jakbym tego chciał. Wniosek zatem, że albo nie potrafię się posługiwać grid'em, albo jest on zdrowo zapędraczony ;) Ale przejdźmy do detali...

Generalnie grid ma wyglądać tak, że są 2 kolumny i X wierszy. Pierwsza kolumna jest na napisy i chciałbym w poziomie (horizontal) mieć ją wyrównaną do prawej strony. Układ drugiej kolumny zwisa mi obojętnym kalafiorem (ma flex="1", więc pochłania całą dostępną przestrzeń). Jeżeli chodzi o wiersze, to interesuje mnie wyrównanie do lini podstawowej (align="baseline"), gdyż kolumna druga zawiera elementy o różnym rozmiarze (m.in. menulist, textfield) i zależy mi na tym, aby dobrze się układały względem siebie.

Biorąc pod uwagę różne własności doszedłem do wniosku (nie mam pojęcia, czy prawidłowego), że w ramach grid'a można przyjąć takie założenie:

<column> = <vbox>
<row> = <hbox>

zatem w/g speca powyżej zmajstrowałem następujący układ:

<grid>
<columns>
<column align="baseline"/>
<column flex="1"/>
</columns>
<rows>
<row align="right">
... content ...
</row>
</rows>
</grid>

No i nie uzyskuję oczekiwanego układu (Mozilla 1.6 & FireFox 0.8). Efekt jest trochę taki, jakby wszystkie alignmenty były olewane. Nie ma ani wyrównania do lini podstawowej (label w pierwszej kolumnie jest *znacznie* wyzej lini tekstu w menulist w kolumnie drugiej) ani wyrownania do prawej (pierwsza kolumna ma wszystkie labele wyrównane do lewej).

Stwierdziłem, że może pierwotne założenie jest nieprawidłowe i zamieniłem rolami column i row (to znaczy dałem <column align="right"> oraz <row align="baseline">) ale zakończyło się to totalną porażką.

Ostateczne podejście do sprawy, to reprezentacja każdej komórki jako box'a i operowanie na nim, ale po pierwsze to mi strasznie "zagraci" strukturę XUL'a, a po drugie aby uzyskać wyrównanie do prawej w poziomie i baseline w pionie, to chyba musiałbym dać coś takiego:

<vbox align="baseline">
<hbox align="right">
... content ...
</hbox>
</vbox>

...co spotęguje wspomniany efekt zagracenia. Czy ktoś z szanownych forumowiczów trenował już zapasy z grid'em i może mi nieco światła rzucić na zagadnienie? :)
elczupi
 
Posty: 2
Z nami od: 19 marca 2004, 15:45

grid + alignment

Postautor: elczupi » 29 marca 2004, 10:39

Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040207 Firefox/0.8

Znalazłem to przed chwilą grzebiąc po sieci:

> normally the text of a label and the text of a textbox are not
> aligned. According to documentation on xulplanet I should use
> align="baseline" to get it aligned.

I've seen the horrors that produces... I think there is special code to
make it work for html but for XUL I would recommend align="center".


źródło: http://mozdev.org/pipermail/project_owners/2004-March/001744.html

Przy założeniu, że wszystkie komponenty w wierszu są symetryczne w pionie (tyle samo pixli nadkładają u góry i u dołu), to z grubsza sprawa jest załatwiona. Różnice są AFAIK bardzo niewielkie i w dodatku z trudem dostrzegalne. Aczkolwiek to jest bardzo poważne uchybienie i mam nadzieję, że ktoś kiedyś to poprawi, bowiem bez tego drobiazgu XUL (a przynajmniej jego implementacja w mozilli) przegra z innymi toolkitami (ze Swing'iem na czele). W każdym bądź razie: <row align="center"> daje rezultaty o niebo lepsze niż <row align="baseline">. Wiem już na pewno, że problem wyrównania do prawej da się załatwić pomocniczym boxem:

<hbox align="right">
... content ...
</hbox>

Tak że do pewnego stopnia problem pozostaje rozwiązany. Nie wygląda to specjalnie elegancko, ale jakoś działa. Któregoś pięknego dnia, jak będe miał mnóstwo wolnego czasu, to przejrzę kod i zobaczę dlaczego koncept lini podstawowej w XUL'u jest taki kulawy.
elczupi
 
Posty: 2
Z nami od: 19 marca 2004, 15:45


Wróć do Programowanie z użyciem technologii Mozilli

Kto jest online

Zarejestrowani użytkownicy: Bing [Bot], Google [Bot]

Przejdź do powiązanej strony

Nawigacja:

Stopka: