Je veux définir le remplissage supérieur d'une textview par programme. Je sais que vous pouvez le faire avec la méthode setPadding (). Mais le problème est que cette méthode nécessite 4 paramètres: gauche, haut, droite, bas. Je ne veux pas changer le gauche, le droit et le bas, je veux juste changer le remplissage du haut.
Est-ce possible?
utilisation
yourTextView.setPadding(0, 10, 0, 0);
Réglez uniquement les paramètres dont vous avez besoin et définissez les autres à zéro.
Si vous devez conserver d’autres rembourrages existants, utilisez yourView.getPaddingLeft()
, yourView.getPaddingTop()
et ainsi de suite.
Je crée généralement une méthode d'utilitaire simple pour ne pas oublier ou égarer les autres rembourrages:
public static void setPaddingLeft(View v, int leftPaddingDp) {
int leftPaddingPx = dpToPx(leftPaddingDp);
v.setPadding(leftPaddingPx, v.getPaddingTop(), v.getPaddingRight(), v.getPaddingBottom());
}
A utiliser plus tard comme ça, en fournissant des unités dp, comme si cela se ferait dans XML:
Utils.setPaddingLeft(myExampleTextView, 10)
Vous pouvez aussi utiliser ceci
setPadding(view, 500, Padding.TOP);
avec l'aide d'un @IntDef definition:
public static void setPadding(View view, int padding, @Padding.Direction int direction) {
switch (direction) {
case Padding.LEFT:
view.setPadding(padding, view.getPaddingTop(), view.getPaddingRight(), view.getPaddingBottom());
return;
case Padding.RIGHT:
view.setPadding(view.getPaddingLeft(), view.getPaddingTop(), padding, view.getPaddingBottom());
return;
case Padding.TOP:
view.setPadding(view.getPaddingLeft(), padding, view.getPaddingRight(), view.getPaddingBottom());
return;
case Padding.BOTTOM:
view.setPadding(view.getPaddingLeft(), view.getPaddingTop(), view.getPaddingRight(), padding);
return;
default:
}
}
public static class Padding {
@IntDef({Padding.LEFT, Padding.RIGHT, Padding.TOP, Padding.BOTTOM})
@Retention(RetentionPolicy.SOURCE)
public @interface Direction {}
public static final int LEFT = 0;
public static final int RIGHT = 1;
public static final int TOP = 2;
public static final int BOTTOM = 3;
}