53 votes

Comment appliquer des opérations mathématiques aux dimensions Android ?

Comment éviter ces calculs codés en dur...

 <resources>
 <dimen name="uno">10dip</dimen>
 <dimen name="dos">6dip</dimen>
 <dimen name="uno_plus_dos">16dip</dimen>
</resources>

<Button 
 android:layout_marginTop="@dimen/uno_plus_dos" />

... et le convertir en quelque chose comme ça ?

 <Button
 android:layout_marginTop="@dimin/uno + @dimen/dos" />

17voto

miguel Points 1537

Une astuce pour un ajout simple consiste à utiliser margin + padding.

10voto

Quentin Gaultier Points 154

Utilisation de la liaison de données :

 android:layout_marginTop="@{@dimen/uno + @dimen/dos}"

Les adaptateurs de marges IFAIK ne sont pas fournis par le sdk. Vous devrez le définir vous-même :

 @BindingAdapter("android:layout_marginTop")
public static void setBottomMargin(View view, int bottomMargin) {
    ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
    layoutParams.setMargins(layoutParams.leftMargin, layoutParams.topMargin,
            layoutParams.rightMargin, bottomMargin);
    view.setLayoutParams(layoutParams);
}

Assurez-vous que la liaison de données est activée pour votre projet :

 dataBinding {
    enabled = true
}

dans votre build.gradle .

Le document de liaison de données vaut la peine d'être lu.

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