2010-11-22 15 views
0

J'ai un ImageView que je place au centre à l'intérieur de la LinearLayout d'une page de base dans mon fichier xml. Je prends une photo, je détecte les visages et je l'affiche sur mon ImageView. Le problème est, il affiche toujours sur le côté gauche de mon téléphone (j'ai l'application réglée en permanence au mode portrait) ... Je veux que le width soit fill_parent et je veux le height être réparé, mais tout changement que je fais fait rien à la façon dont il est affiché.Je ne peux pas pour la vie de moi comprendre pourquoi mon image ne s'affiche pas correctement

Voici mon code xml:

<ImageButton 
    android:id="@+id/YesButtonTitle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/yesface" 
    android:layout_gravity="top|center" /> 

<ImageView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/image_view" 
    android:gravity="center" 
    android:layout_weight="1.0"/> 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/message" 
    android:gravity="center_horizontal" 
    android:padding="10dip"/> 

<Button 
    android:layout_gravity="center_horizontal" 
    android:layout_width="fill_parent" 
    android:textStyle="bold" 
    android:id="@+id/action_button" 
    android:selectAllOnFocus="false" 
    android:layout_height="100dip" 
    android:text="Click here to crop detected face"/> 

Voici où je mets le bitmap au ImageView:

((Button) findViewById(R.id.action_button)) 
     .setOnClickListener(btnClick); 
mTheMessage.setText(R.string.faceMessage); 
mThePicture = (ImageView) findViewById(R.id.image_view); 
mThePicture.setImageBitmap(bitmap565); 

bitmap565 est défini comme:

Bitmap bitmap565 = Bitmap.createBitmap(width, height, Config.RGB_565); 

puis comprimé:

try { 
    FileOutputStream fos = new FileOutputStream(filepath); 
    bitmap565.compress(CompressFormat.JPEG, 90, fos); 
    fos.flush(); 
    fos.close(); 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

Avant d'afficher le bmp sur le ImageView. Quelqu'un at-il des idées pour lesquelles il ne se comportera pas et le ImageView correctement?

Répondre

0

Cela a fonctionné pour moi, peut-être cela fonctionnera pour vous aussi.

<ImageView 
    android:id="@+id/image_id" 
    android:padding="2dip" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:scaleType="centerInside" 
    android:layout_weight="1"/> 

En ce qui concerne pourquoi votre XML ne fonctionne pas. J'ai regardé et tout semble bien sauf peut-être pour l'androïde: la gravité qui semble ne rien faire dans le cas des images.

+0

Toujours le même résultat ... Il me semble être en mesure de faire ce que je veux le xml fichier, il affiche toujours la même façon - pourrais-je faire quelque chose de mal dans ma classe? – Sapp

+0

Je ferais un processus d'élimination. Sortez tout le reste du XML et voyez à quoi il ressemble. Travaillez avec elle jusqu'à ce qu'elle s'affiche comme vous le souhaitez, puis ajoutez les autres widgets. – Eliseo

1

Set layout_width = « wrap_content » pas fill_parent, alors seulement vous obtiendrez l'effet de la gravité de la mise en page de parent

<ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/image_view" 
     android:gravity="center" 
     android:layout_weight="1.0"/>