Définir la largeur de l'image et de la hauteur en ImageView
Peu importe ce que j'essaie, je ne peux pas définir la largeur et la hauteur de mon image qui est transmise d'un service soap pour mon émulateur android. Je suis à l'aide d'une ImageView comme suit:
byte[] bloc = Base64.decode(result, Base64.DEFAULT);
Bitmap bmp = BitmapFactory.decodeByteArray(bloc,0,bloc.length);
ImageView image = new ImageView(this);
image.setImageBitmap(bmp);
image.setLayoutParams(
new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
image.getLayoutParams().height = 100;
image.getLayoutParams().width = 100;
setContentView(image);
Dans le code ci-dessus, je suis d'essayer de définir la largeur et la hauteur manuellement, d'une image jpeg qui a un 259px largeur et 194px hauteur.
L' /res/layout/main.xml ressemble
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="1" android:id="@+id/llid">
</LinearLayout>
Après avoir essayé quelques-unes des approches ci-dessous les réponses, je viens de voir la suite sur mon émulateur
Je ne suis même pas sûr si l'approche que je prends est correct. La plupart des autres solutions que j'ai trouvé de la recherche dans les forums ne fonctionnent pas pour moi. Toutes les suggestions sont les grands.
- image.getLayoutParams() retourne en lecture seule les valeurs (getters) qui ont déjà été mis sur ce point de vue. Ils ne sont pas des organismes de normalisation pour être utilisé lors de l'exécution.
Vous devez vous connecter pour publier un commentaire.
Essayer comme ça. Faire une utilisation de
yourBitmap.getWidth()
et.getHeight()
Edit:
Maintenant vous avez défini le LP pour le ImgView, la première chose que vous avez à faire est d'ajouter à la disposition
LinearLayout ll = (LinearLayout)findViewById(R.layout.llid);
Maintenant vous pouvez ajouter votre point de vue directement ou vous pouvez le faire comme séparant les paramètres et les ajouter avec
.addView(view, params)
ou.addView(View);
Votre appel.de sorte que vous ne
ll.addView(image);
Espérons que cela fonctionne
LinearLayout ll = (LinearLayout) findViewById(R.id.llid); System.out.println("***** LINEAR LAYOUT: " + ll); ll.addView(image);
mais, " ll " est null pour une raison quelconque. J'ai mis à jour mon /res/layout/main.xml dans mon post ci-dessus.LinearLayout ll = (LinearLayout)findViewById(R.layout.llid);
- je obtenirnull
pour une raison quelconque, même si j'ai défini un id pour mon "LinearLayout" dans le main.xmlsetContentView(image);
dit-Il, L'enfant spécifié dispose déjà d'un parent. Vous devez appeler 'removeView()' sur le parent de l'enfant d'abord".setContentView()
est de définir clairement pour l'activité que vous avez déjà fait (settig l'main.xml) et que vous définissez le parent fr votre ImageView et blabla.hauteur = 100 vous venez d'affecter la valeur que vous n'utilisez jamais. J'espère avoir été clair et assez simple 😀Ce qui se passe si vous modifiez ce qui suit:
À:
.. et c'est l'objet placé dans un LinearLayout?
Je ne suis pas sûr que dans ce champ, vous êtes manuellement le réglage de votre affichage de l'image, mais si c'est avant le onMeasure est appelée pour l'ImageView, alors que c'est probobly pourquoi il est en respectant la mise en page XML params.
Vous pouvez essayer de surcharger votre onMeasure méthode pour votre ImageView, et d'appeler setMeasuredDimension(100,100) pour définir manuellement il.
essayer cette