it-swarm.com.ru

Android: установите только один отступ для просмотра текста программно

Я хочу программно установить верхний отступ текста. Я знаю, что вы можете сделать это с помощью метода setPadding (). Но проблема в том, что этот метод требует 4 параметра: слева, сверху, справа, снизу. Я не хочу менять левый, правый и нижний, я просто хочу изменить верхний отступ.

Это возможно?

22
Xander

использование

    yourTextView.setPadding(0, 10, 0, 0);

Настройте только те параметры, которые вам нужны, и установите остальные на ноль.

Если вам нужно сохранить другие существующие отступы, используйте yourView.getPaddingLeft(), yourView.getPaddingTop() и так далее.

66
Droidman

Я обычно создаю простой служебный метод, чтобы не забыть или не использовать другие отступы:

public static void setPaddingLeft(View v, int leftPaddingDp) {
    int leftPaddingPx = dpToPx(leftPaddingDp);
    v.setPadding(leftPaddingPx, v.getPaddingTop(), v.getPaddingRight(), v.getPaddingBottom());
}

Чтобы использовать позже, как это, предоставляя единицы измерения dp, как если бы это было в xmls:

Utils.setPaddingLeft(myExampleTextView, 10)
17
pkk

Вы также можете использовать это

setPadding(view, 500, Padding.TOP);

с помощью @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