2010-09-24 25 views
21

J'utilise Layout_width="fill_parent "et Layout_height="wrap content". Si une image est plus grande que la ImageView, il sera à échelle réduite parfaitement.Est-ce que android: scaleType = "fitCenter" ne fonctionne qu'avec les attributs fixes Layout_width et Layout_height?

Cependant, je ne l'ai eu de travail à haut de gamme des images plus petites. J'ai essayé une combinaison de ScaleType et « AdjustViewBounds » : il reste toujours dans sa propre taille au milieu de la vue de l'image est ici le code ...

<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

Essayez d'utiliser CENTER_INSIDE ou FIT_XY. – bhups

+0

J'ai essayé tous. Aucun d'eux n'a travaillé pour moi. – OneWorld

+4

J'ai trouvé le seul moyen de le faire fonctionner, réglait layout_hight et layout_width à des valeurs fixes comme 150dp x 200dp – OneWorld

Répondre

1

Ajout android:scaleType="fitXY" ur ImageView devrait étirer l'image si la taille est petite

+3

bien que cela ne conserve pas le rapport d'aspect ... – OneWorld

+0

Oui, cela fonctionne très bien si l'image est plus grande mais si elle est plus petite, elle ne s'adapte que la hauteur ou la largeur. Stupide la façon dont Android gère les images – JPM

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

utilise la taille originale de l'image à l'intérieur.

Essayez quelque chose de plus ou fill_parent

+0

Ceci est juste l'une de mes réponses en or, vous n'avez aucune idée de combien de problèmes j'ai eu avec imageview et son scaletype défectueux (ou mal compris). Thamls une tonne. – Warpzit

2

Utilisez android:scaleType="FIT_START" ou android:scaleType="FIT_END", pour calculer une échelle qui maintiendra le rapport initial d'aspect src, mais aussi veiller à ce que src correspond entièrement à l'intérieur dst (de GoogleDev).

Plus d'infos:

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

+2

C'est android: scaleType = "fitStart" ou android: scaleType = "fitEnd", et ceux-ci sont presque exactement les mêmes que Android: scaleType = "fitCenter" de toute façon. La différence est de savoir comment ils gèrent l'espace vide, en commençant par le début, la fin ou le centrage. – OldSchool4664

9

Je viens de trouver un moyen de le faire fonctionner.

Cela fonctionne en 2.1 (AVD) & 4.1.2 (périphérique)

<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

avec cette méthode, si vous avez une bordure sur l'imageView, il y aura des espaces sur les côtés où l'image n'a pas été mise à l'échelle – Olumide