Je souhaite ajouter un nombre inconnu de ImageView
vues à ma mise en page avec 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 non ImageView.setMargin()
. Je pense que cela va dans le sens ImageView.setLayoutParams(LayoutParams)
, mais je ne sais pas quoi alimenter cela.
Est-ce que quelqu'un sait?
FrameLayout.LayoutParams
et peut-être avec d'autres: stackoverflow.com/questions/5401952/…android:layout_centerHorizontal = "true"
etandroid:layout_alignParentBottom = "true"
de quelle manière je pourrais accomplir cela?la source
android:layout_centerHorizontal = "true"
etandroid:layout_alignParentBottom = "true"
de quelle manière je pourrais accomplir cela?Tous les exemples ci - dessus seront effectivement REMPLACER tout params déjà présent pour la vue, qui peut ne pas être désiré. Le code ci-dessous ne fera qu'étendre les paramètres existants, sans les remplacer:
la source
Le code de Kevin crée un
MarginLayoutParams
objet redondant . Version plus simple:la source
Si vous souhaitez modifier la marge de visualisation de l'image mais laissez toutes les autres marges intactes.
Obtenez MarginLayoutParameters de votre vue d'image dans ce cas:
myImageView
Maintenant, changez simplement la marge que vous souhaitez modifier mais laissez les autres telles quelles:
la source
Vous pouvez utiliser cette méthode, au cas où vous souhaiteriez spécifier des marges dans dp:
la source
J'utilise simplement ceci et fonctionne très bien:
L'unité de setMargins () est le pixel et non le dp. Si vous souhaitez définir la marge dans dp, juste à l'intérieur de votre fichier values / dimens.xml , créez vos dimensions comme:
et accéder comme:
la source
Si vous utilisez kotlin, cela peut être simplifié en créant une fonction d'extension
Maintenant, tout ce dont vous avez besoin est une vue, et cette fonction d'extension peut être utilisée n'importe où.
la source
left
et lesright
marges, mais si vous avez des marges relatives (start
etend
) cela ne fonctionne pas. J'ai écrit un résumé avec une version «améliorée» de votre code: gist.github.com/Grohden/f40c53bf86c5395638f7a44bf90e732d (lasetMarginsRelative
fonction) - pourriez-vous l'inclure dans votre réponse?la source
Pour moi, cela a fonctionné:
la source
la source
L'utilisation d'une méthode similaire à celle-ci peut vous éviter des maux de tête dans certaines situations. Si vous avez deux passes de bricolage programmatique avec des marges, il est plus sûr de vérifier s'il existe déjà des paramètres layoutParams. S'il y a déjà des marges, il faut les augmenter et non les remplacer:
la source
Voici un exemple pour ajouter une marge de 8 pixels à gauche, en haut, à droite et en bas.
la source
Réponse de l'année 2020:
et calquez-le simplement dans votre code
la source