2011-07-19 8 views
5

Mam warstwę LayerDrawable, która powinna wyświetlać 5 bitmap. 1 tło i 4 ikony (które mogą być różne dla każdego LayerDrawable), podobnie jak siatka. Niestety te ikony nie mają tej samej szerokości co wysokość. Mój problem polega na ich rozmiar, przy zachowaniu ich proporcje i umieścić je w swoim stanowisku (1-4, 5 Icons tle):jak zmienić rozmiar i położenie rysunków wewnątrz warstwy LayerDrawable w systemie Android

================== 
|  | |  | 
| 1 | | 2 | 
|------.5 .------| 
|------. .------| 
| 3 | | 4 | 
|  | |  | 
================== 

Gdybym rozmiaru tych bitmap, dać im Gravity.CENTER nie zmieści się już wewnątrz Granice tła Prostokąt. Jeśli opuścisz numer Gravity.CENTER, zostaną one przeskalowane, gdy tylko zadzwonię pod numer layerDrawable.setLayerInset(numlayer, left, top, right, bottom). Co to jest właściwy sposób? Jak mogę zachować ich stosunek podczas umieszczania ich poprawnie? Do tej pory nie mogłem zrozumieć, dlaczego getIntrinsicWidth/Height z BitmapDrawable zwraca coś innego (mniejszego) niż getWidth/Height z oryginalnej bitmapy.
Co próbowałem:
1. Pobieranie ich z XMLa, umieszczanie w środku "dummy-drawable" i zastąpienie go wynikiem opisanym powyżej. 2. Utwórz warstwę LayerDrawable w moim programie, przekazując wszystkie zawarte w niej rysunki. Wydaje się, że setLayerInset nie ma wpływu, czy widzę tylko tłem (który był element 0 w moim rozciągliwej tablicy)
3. Rozszerzenie LayerDrawable i starają się śledzić na niczym się bez rozsądnych wyników

Odpowiedz

1

BitmapDrawable, domyślnych dy , wypełnia swoje granice podanym Bitmap. Jeśli zaczniesz używać Gravity, Bitmap będzie pozycją zgodną z podanym Gravity. Przypuszczam, że w twoim przypadku najlepszym wyborem jest stworzenie własnego Drawable.

Jeśli chodzi o metody getIntrinsic [Height | Width], zwracają rzeczywisty rozmiar bazowego Bitmap, który może być inny, jeśli system zmieni go podczas ładowania (obraz hdpi załadowany na przykład na ekranie mdpi).

Powiązane problemy