Les marges d'un LinearLayout, par programmation avec dp
Est-il possible de définir les Marges d'un LinearLayout, par programme, mais pas avec des pixels, mais dp?
Vous devez vous connecter pour publier un commentaire.
Est-il possible de définir les Marges d'un LinearLayout, par programme, mais pas avec des pixels, mais dp?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser DisplayMetrics et de déterminer la densité de l'écran. Quelque chose comme ceci:
Comme je me souviens, il vaut mieux utiliser des revêtements de sol pour les décalages et arrondi pour les largeurs.
Resources.getSystem().getDisplayMetrics().denisty
dans le cas où vous êtes dans un Util classe qui n'a pas de contexte. Got ce à partir de iciJ'ai eu le même problème et l'a utilisé cette technique pour le résoudre:
Tout d'abord, j'ai ajouté un fichier xml à mon res/values dossier appelé dimensions.xml. Il ressemble à ceci:
Seconde, dans mon code, j'ai eu le pixel équivalent de la marge comme suit (notez que je suis en utilisant Xamarin c'est donc le code C#, mais la pure version de Java devrait être très similaire):
Enfin, j'ai créer ma mise en page params:
int getDimenInt(Context context, @DimenRes int dimenRes){ return context.getResources().getDimensionPixelSize(dimenRes); }
Vous pouvez convertir dp px, par exemple, convertir 5dp px:
La méthode suivante fonctionne pour moi pour la conversion des pixels de la dp:
convertir DP de valeur de Pixel
Bien pour le kotlin les gars, j'ai eu très pratique helper plaisir qui fonctionne parfaitement 🙂
Il suffit de passer dans un valide de la vue et de tout mettre en place!