2012-02-21 5 views
3

J'ai un problème avec ma liste qui contient un ImageView et quelques TextView pour chaque élément.Android Listview taille de l'image

Plus ou moins, il y a deux lignes de TextViews et un ImageView (XX) qui devrait prendre les deux lignes:

|XX| TextView 1  TextView 2 
|XX| TextView 3  TextView 4 

Mon problème est quand je change l'image ImageView. Mon objectif est d'avoir la même hauteur pour l'imageview que pour les deux textviews ensemble. Mais mon image étant 400x300, l'imageview est développée pour le contenir. J'ai essayé d'obtenir la hauteur de l'imageView avec getHeight ou getMeasuredHeight pour redimensionner le bitmap avant de le mettre dans l'imageView, cela ne fonctionne pas.

Ma mise en page pour le listview est:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<ImageView 
    android:id="@+id/list_poi_image" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:scaleType="centerCrop" 
    android:contentDescription="@string/points_of_interest_activity_image_content_description" /> 

<TextView 
    style="@style/CarloText" 
    android:id="@+id/list_poi_name" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_toRightOf="@+id/list_poi_image" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 

<TextView 
    style="@style/CarloText" 
    android:id="@+id/list_poi_description" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/list_poi_name" 
    android:layout_below="@+id/list_poi_name" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

...

Merci pour votre aide !!!

Répondre

3

Définissez une hauteur fixe pour l'affichage de l'image et définissez le type d'échelle d'imageView FIT_XY ou CENTER_INSIDE. FIT_XY redimensionnera votre image à la largeur et la hauteur souhaitées, indépendamment de l'aspect de l'image, afin que l'image puisse s'étendre. CENTER_INSIDE mettra à l'échelle votre image dans des dimensions données en conservant le rapport d'aspect de l'image.

+0

Mais je ne connais pas la valeur de hauteur des TextViews. Cela peut varier selon l'appareil non? – user1029309

+0

Dans ce cas, il ne reste plus que deux options, wrap_content ou fill_parent, et dans les deux cas, la hauteur de l'image dépend des dimensions de l'image si la taille de l'image est supérieure à celle du texte. – jeet

+0

Ok j'ai trouvé un moyen de le gérer, merci: D – user1029309

0

Vous pouvez définir le LayoutParams du code ImageView pour lui donner une hauteur égale à TextView1 + TextView3.