2010-09-24 11 views
21

używam Layout_width="fill_parent "i Layout_height="wrap content". Jeśli obraz jest większy niż ImageView, będzie doskonale skalowany w dół.Czy Android: scaleType = "fitCenter" działa tylko z atrybutami Layout_width i Layout_height?

Jednak nigdy nie miałem go pracy do ekskluzywnych mniejszych obrazów. Próbowałem dowolną kombinację ScaleType i«AdjustViewBounds» : to zawsze pozostaje w swojej wielkości w środku widoku obrazu Oto kod ...

<LinearLayout 
     android:id="@+id/LinearLayout02" 
     android:layout_height="wrap_content" 
     android:background="@drawable/content_bg" 
     android:orientation="vertical" 
     android:padding="5dp" 
     android:layout_width="fill_parent" 
     android:layout_marginLeft="1px"> 
     <ImageView 
      android:layout_height="wrap_content" 
      android:src="@drawable/test" 
      android:id="@+id/ImageViewTest" 
      android:layout_width="fill_parent" 
      android:adjustViewBounds="true" 
      android:scaleType="center"></ImageView> 
</LinearLayout> 
+0

Spróbuj użyć CENTER_INSIDE lub FIT_XY. – bhups

+0

Próbowałem ich wszystkich. Żaden z nich nie pracował dla mnie. – OneWorld

+4

Znalazłem jedyny sposób, aby to zadziałało, ustawiłem layout_hight i layout_width na stałe wartości, takie jak 150dp x 200dp – OneWorld

Odpowiedz

1

Dodawanie android:scaleType="fitXY" ur ImageView należy rozciągnąć obraz, jeśli rozmiar jest mały

+3

dobrze, że nie zachowuje proporcji ... – OneWorld

+0

Tak, działa dobrze, jeśli obraz jest większy, ale jeśli jest mniejszy, to pasuje tylko do wzrostu lub szerokości. Głupi sposób, w jaki Android obsługuje obrazy – JPM

4
<LinearLayout 
    android:layout_height="wrap_content" 
.. 210

używa oryginalnego rozmiaru obrazu wewnątrz.

spróbować czegoś większego lub fill_parent

+0

To tylko jedna z moich złotych odpowiedzi, nie masz pojęcia, ile miałem kłopotów z obrazem i jego błędnym (lub źle zrozumianym) szelakiem. Thamls tonę. – Warpzit

2

Zastosowanie android:scaleType="FIT_START" lub android:scaleType="FIT_END", aby obliczyć skalę, która będzie zachować oryginalne proporcje src, ale zapewni również, że src pasuje całkowicie wewnątrz DST (od GoogleDev).

Więcej informacji:

http://developer.android.com/reference/android/widget/ImageView.ScaleType.html

+2

To Android: scaleType = "fitStart" lub android: scaleType = "fitEnd", a te są prawie dokładnie takie same jak Android: scaleType = "fitCenter". Różnica polega na tym, jak radzą sobie z pustą przestrzenią, dostosowując się do rozpoczęcia, zakończenia lub centrowania. – OldSchool4664

9

Właśnie znalazł sposób, aby to działało.

To działa w 2.1 (AVD) & 4.1.2 (urządzenia)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scaleType="fitCenter" /> 

</LinearLayout> 
+1

za pomocą tej metody, jeśli masz ramkę na obrazie, po bokach będą białe znaki, których obraz nie jest skalowany do – Olumide