Je voudrais définir la hauteur et la largeur dans dp
pour ImageView
dans Android de manière pragmatique.
Comment puis-je atteindre cet objectif?
Définir la largeur et la hauteur avec dp:
imageview.getLayoutParams().height = (int) getResources().getDimension(R.dimen.imageview_height);
imageview.getLayoutParams().width = (int) getResources().getDimension(R.dimen.imageview_width);
Dans votre fichier dimens.xml, indiquez les valeurs des clés:
<dimen name="imageview_width">50dp</dimen>
<dimen name="imageview_height">50dp</dimen>
Utilisez les mesures d'affichage pour obtenir le facteur de vente, puis quelques calculs simples - par exemple, si je veux 200x150dp:
final float scale = getResources().getDisplayMetrics().density;
int dpWidthInPx = (int) (200 * scale);
int dpHeightInPx = (int) (150 * scale);
Puis définissez la taille d'affichage de l'image:
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(dpWidthInPx, dpHeightInPx);
imageView.setLayoutParams(layoutParams);
Cela peut être plus simple et devrait faire l'affaire:
ImageView im = (ImageView)findViewById(R.id.image1);
LayoutParams params = im.getLayoutParams();
params.height = getActivity().getResources().getDimensionPixelSize(R.dimen.item_height);
params.width = getActivity().getResources().getDimensionPixelSize(R.dimen.item_width);
Et dans votre dimens.xml
<dimen name="item_height">80dp</dimen>
<dimen name="item_width">80dp</dimen>
final float scale = getContext().getResources().getDisplayMetrics().density;
int height_ = (int) (250 * scale + 0.5f);
int width_ = (int) (250 * scale + 0.5f);
250 est en dp
ViewGroup.LayoutParams params = ImageView.getLayoutParams();
params.height = height_;
params.width = width_;
ImageView.setLayoutParams(params);
Cela peut vous aider ...
ImageView im = (ImageView)findViewById(R.id.image1);
LayoutParams params = im.getLayoutParams();
params.height = 100;
params.width = 100;