2010-11-16 14 views
11

android nieruchomości: layout_gravity = „clip_vertical | poziomy” wykonuje następujące czynności wymienione w dokumentacji SDK:Co jest android: layout_gravity = „clip_vertical” dokładnie

dodatkowa opcja, która może być ustawiona na mają tę górne i/lub dolne krawędzie dziecka obciętego do granic kontenera . Klip będzie oparty na pionowej grawitacji : górna gravity będzie przycinać dolną krawędź, dolna gravity będzie przycinać górną krawędź, a ani nie będzie przycinać obu krawędzi.

ale ja nic nie widzę tego w moich zastosowaniach

więc jaki jest cel tego obiektu dokładnie?

dzięki

Odpowiedz

19

wersja krótka:

clip_horizontal i clip_vertical odnoszą się do pomiarów widoku siebie, zanim jakiekolwiek zawartości (takich jak zdjęcia w BitmapDrawable) są renderowane.


Długa wersja:

Zabrakło mi do jakiegoś podobnego zamieszania nad clip_horizontal i clip_vertical. (W moim przypadku było to związane z Androidem: grawitacja dla BitmapDrawable, ale jest wystarczająco podobna, aby można ją było zastosować.)

Z dokumentacji pomyślałem, że coś podobnego do androida: gravity = "top | left | clip_vertical" na bitmapa spowodowałaby umieszczenie lewego górnego rogu obrazu w lewym górnym rogu widoku, a jeśli bitmapa byłaby wyższa niż widok, byłaby "przycięta" w dolnej krawędzi widoku. Innymi słowy, pokazuj tylko tyle bitmapy, ile widok jest wystarczająco duży, by ją ujawnić; nie rozciągaj mapy bitowej, ale pokazuj tylko to, co pasuje, pozwalając reszcie rozciągać się poniżej dolnej krawędzi.

Jednak stało się odwrotnie: kiedy ustawiłem clip_vertical, duża bitmapa została zgnieciona pionowo, aby zmieścić się w wysokości widoku.

Po zbadaniu sposobu applyDisplay() w platformy/technologii/core/JAVA/Android/view/Gravity.java, zdałem sobie sprawę, mój błąd:

To nie jest mapa bitowa obraz że jechał być przycięte, ale rzeczywisty rozmiar kontenera, w którym ostatecznie jest renderowany obraz, to .

Ustawienie clip_vertical w moim przypadku nie oznaczało "przycięcia obrazu przy dolnej krawędzi", oznaczało "przycięcie samego widoku BitmapDrawable, tak aby jego wysokość odpowiadała wysokości jego kontenera nadrzędnego" ... co spowodowało, że obraz zostać "zgnieciony", ponieważ wypełnił on krótszą wysokość.

Tak, ważne jest, aby pamiętać o android: grawitacja i Android: layout_gravity że clip_horizontal i clip_vertical zastosowanie do pomiarów widzenia sama, zanim jakiekolwiek treści (takich jak mój BitmapDrawable) są renderowane.

+0

Dziękuję za wyjaśnienia! To tak jakby ktoś zapalił światło w ciemnym zakątku mojej wiedzy na Androida. Twoje zdrowie! – SlashG

0

Może nie ma efektu, ponieważ horizontal nie jest zdefiniowana w android:layout_gravity. clip_vertical to dodatkowa właściwość używana jako dodatek do właściwości podstawowej.

+0

Przykro mi, ale jeśli napisałem to tak: android: layout_gravity = "top | clip_vertical" Wciąż widzę, że nic się nie zmieniło –

+0

Musisz uzyskać swój pogląd w sytuacji, w której faktycznie by się zaciął. Najczęściej dzieje się tak, gdy jest używany z menedżerem okien (które okna będą przycinane ekranem itp.). – hackbod

+0

Czy możesz wyjaśnić więcej? –

0

Flaga do przycięcia krawędzi obiektu do jego pojemnika wzdłuż osi poziomej.

check this

Powiązane problemy