0
votes

Set ImageView hauteur 50% de la largeur de ce

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);
    }
}


4 commentaires

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


3 Réponses :


0
votes

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();


0 commentaires

0
votes

Si vous utilisez contraintlayout comme racine, vous pouvez faire ci-dessous: xxx

Il est principalement autour de layout_constrontatdimensionratio ceci permettrait d'atteindre automatiquement Ce que vous voulez, serait probablement le plus facile aussi.

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.


0 commentaires

0
votes

Vous pouvez définir le rapport en XML si vous utilisez "la mise en page de contrainte" xxx pré>

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();


0 commentaires