2011-07-08 19 views
6

Mam układ z dwoma obrazami w środku. Każdy obraz ma stały współczynnik proporcji, na przykład pierwszy obraz to 320x160, drugi to 320x320. Układ jest wyrównany w pionie. Chcę, żeby te dwa obrazy były ze sobą sklejone i skalowane tak, aby pasowały do ​​jednego z boków ekranu (szerokość lub wysokość) i skalowały drugą stronę w sposób proprotionalny. Próbowałem użyć scaleType = fitCenter, ale problemem jest to, że na różnych telefonach o różnych proporcjach zdjęcia nie są ze sobą powiązane, między nimi jest czarny obszar. Wygląda na to, że nie mogę użyć układu: waga, ponieważ ekrany mają inny współczynnik (480 x 854 i 480 x 800) i potrzebuję, aby mój układ pozostał taki sam, skalowany.skalowanie układu Android ze stałym współczynnikiem proporcji w różnych telefonach

Każda pomoc jest doceniana.

Oto mój układ teraz:

<LinearLayout 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 
<ImageView android:src="@drawable/im_menu" 
android:adjustViewBounds="true" 
android:scaleType="fitCenter" 
android:layout_width="fill_parent" android:layout_height="wrap_content" 
android:layout_gravity="center_horizontal|top" 
android:layout_weight="0.7" 
> 
</ImageView> 
<ImageView android:src="@drawable/im_field" 
android:adjustViewBounds="true" 
android:scaleType="fitCenter" 
android:layout_width="fill_parent" android:layout_height="wrap_content" 
android:layout_gravity="center_horizontal|top" 
android:layout_weight="0.3" 
> 
</ImageView> 
</LinearLayout> 

Odpowiedz

2

można użyć masy układu o wartościach względnych też. Na przykład, jeśli chcesz, aby pole zawierało 30%, a inne 70%, ustaw wagę widoku dzieci na 0,3 i 0,7 i nie określaj szerokości ani wysokości w elementach potomnych. Jest to wyjaśnione w sekcji prowadzącej deweloper (TIP):

developer guide - linear layout

Również może trzeba użyć RelativeLayout zamiast LinearLayout.

+0

Ponownie, efekt jest taki sam. Jak próbowałem wyjaśnić, nie mogę używać rozmiarów rodziców, ponieważ w stosunku 480x800 = 1,66 i na 480x854 = 1,77, ale muszę zachować układ zawsze w stosunku 1,5 i wypełnić najniższy rozmiar ekranu. –

+0

@ Kapitan Północny: Nie używaj wartości bezwzględnych w pikselach, spróbuj wartości względnych, tak jak powiedziałem powyżej. Części wyrównania nie da się osiągnąć tylko przy użyciu masy, powinieneś spojrzeć na grawitację lub użyć RelativeLayout, aby dopasować się do twoich wymagań. –

+0

Jeśli usunę szerokość układu i wysokość z elementów podrzędnych, znikną one. –

6

Można użyć:

android:adjustViewBounds="true" 

i ustawić fill_parent do wysokości np

<ImageView 
... 
android:layout_height="fill_parent" 
...> 

adjustViewBounds do moich danych

Powiązane problemy