J'ai configuré mon ImageView comme suit:
<ImageView Android:id="@+id/dl_image"
Android:layout_width="60dp"
Android:background="@drawable/pictureframe"
Android:layout_height="wrap_content"
Android:layout_marginRight="10dp"
Android:layout_alignParentLeft="true"
Android:layout_centerVertical="true"
Android:adjustViewBounds="true"
Android:scaleType="fitCenter"/>
Notez que layout_width est fixé à 60dp. En fonction du contenu que j'ai acquis en ligne, je souhaite redimensionner cette largeur à 90dp, ou 120dp (tout en conservant le rapport hauteur/largeur de l'image).
J'ai essayé d'utiliser setLayoutParams, mais en passant LayoutParams (120, LayoutParams.WRAP_CONTENT) lève une exception. Il ne semble pas aimer ça.
Si possible, j'essaie d'éviter de créer une autre ImageView pour des tailles plus grandes.
Si vous travaillez avec une vue existante, créer un nouvel ensemble de LayoutParams
à partir de zéro peut demander beaucoup de travail. Au lieu de cela, vous pouvez récupérer les LayoutParams existants de la vue, les modifier, puis les appliquer à la vue pour mettre à jour ses LayoutParams à l'aide de setLayoutParams()
ImageView imageView = findViewById(R.id.dl_image);
LayoutParams params = (LayoutParams) imageView.getLayoutParams();
params.width = 120;
// existing height is ok as is, no need to edit it
imageView.setLayoutParams(params);
Assurez-vous d'importer le type correct de LayoutParams
. Pour ce cas, comme vous l'avez commenté, vous pouvez simplement utiliser le LayoutParams
d'un ViewGroup
. Si vous définissez des paramètres spécifiques à un certain type de vue (par exemple, les alignements dans RelativeLayout
s), vous devrez importer le LayoutParams
de ce type de vue.
vous pouvez tout faire comme
ImageView imageView = findViewById(R.id.dl_image);
imageView.getLayoutParams().width = 120;