Je veux définir imageview hauteur 50% de la largeur de cette taille. comment je peux le faire? Par exemple, si la largeur de l'imageView est égale à 200 dP, je souhaite que la hauteur est égale à 100 dP.
J'ai essayé comme ça, mais cela ne fonctionne pas. P>
public class RectImage extends ImageView { public RectImage(Context context) { super(context); } public RectImage(Context context, AttributeSet attrs) { super(context, attrs); } public RectImage(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public RectImage(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { final int widthSize = MeasureSpec.getSize(widthMeasureSpec); final int heightSize = MeasureSpec.getSize(heightMeasureSpec); setMeasuredDimension(widthSize, widthSize/2); } }
3 Réponses :
Essayez de le faire ci-dessous
int img_width = cover_img.getDrawable().getIntrinsicWidth(); int img_height = img_width/2; cover_img.getLayoutParams().width = img_width; cover_img.getLayoutParams().height = img_height; cover_img.requestLayout();
Si vous utilisez Il est principalement autour de Bien sûr, veuillez positionner votre point de vue comme vous, et ignorer les directives de contrainte ici, je viens de les mettre ici pour un exemple complet. P > p> contraintlayout code> comme racine, vous pouvez faire ci-dessous:
layout_constrontatdimensionratio code> ceci permettrait d'atteindre automatiquement Ce que vous voulez, serait probablement le plus facile aussi. P>
Vous pouvez définir le rapport en XML si vous utilisez "la mise en page de contrainte" ou défini par programme comme votre exemple de code. p> //Your layout param type
ViewGroup.LayoutParams lpm = cover_img.getLayoutParams();
int width = lpm.width;
int height =width/2;
lpm.height = height;
cover_img.setLayoutParams(lpm);
cover_img.requestLayout();
Les tailles de vue sont définies après la phase d'ONDRAW. Où avez-vous essayé votre code?
J'essaye dans mon activité.
Mais en quelle méthode? Oncreate / Onresume / ...?
méthode oncreate