web-dev-qa-db-fra.com

Android: définir un seul remplissage de textview par programmation

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?

22
Xander

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.

66
Droidman

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)
17
pkk

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;
}
0
lenhuy2106