202 votes

Comment définir la marge de ImageView en utilisant du code, pas xml

Je souhaite ajouter un nombre inconnu de vues ImageView à ma mise en page avec une marge. En xml, je peux utiliser layout_margin comme ceci:

<ImageView android:layout_margin="5dip" android:src="@drawable/image" />

Il y a ImageView.setPadding (), mais pas ImageView.setMargin (). Je pense que c'est dans le sens d'ImageView.setLayoutParams (LayoutParams), mais je ne suis pas sûr de savoir quoi en tirer.

Est-ce que quelqu'un sait?

402voto

Key Points 3331

android.vue.ViewGroup.MarginLayoutParams a une méthode setMargins(gauche, haut, droite, bas). Sous-classes directes sont: FrameLayout.LayoutParams, LinearLayout.LayoutParams et RelativeLayout.LayoutParams.

En utilisant par exemple LinearLayout:

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(left, top, right, bottom);
imageView.setLayoutParams(lp);

MarginLayoutParams

Ceci définit les marges en pixels. À l'échelle de l'utiliser

context.getResources().getDisplayMetrics().density

DisplayMetrics

53voto

Kevin Wadera Points 269
    image = (ImageView) findViewById(R.id.imageID);
    MarginLayoutParams marginParams = new MarginLayoutParams(image.getLayoutParams());
    marginParams.setMargins(left_margin, top_margin, right_margin, bottom_margin);
    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(marginParams);
    image.setLayoutParams(layoutParams);

22voto

Adam Stelmaszczyk Points 7396

Le code de Kevin crée un objet redondant MarginLayoutParams . Version plus simple:

 ImageView image = (ImageView) findViewById(R.id.main_image);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(image.getLayoutParams());
lp.setMargins(50, 100, 0, 0);
image.setLayoutParams(lp);
 

2voto

Sydroid Points 94

exemple de code est ici, c'est très facile

 LayoutParams params1 = (LayoutParams)twoLetter.getLayoutParams();//twoletter-imageview
                params1.height = 70;
                params1.setMargins(0, 210, 0, 0);//top margin -210 here
                twoLetter.setLayoutParams(params1);//setting layout params
                twoLetter.setImageResource(R.drawable.oo);
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X