it-swarm.com.de

Android: Legen Sie programmgesteuert nur eine Auffüllung der Textansicht fest

Ich möchte die obere Auffüllung einer Textansicht programmgesteuert festlegen. Ich weiß, dass Sie dies mit der Methode setPadding () machen können. Das Problem ist jedoch, dass diese Methode 4 Parameter erfordert: links, oben, rechts, unten. Ich möchte nicht links, rechts und unten ändern, ich möchte nur die obere Polsterung ändern.

Ist das möglich?

22
Xander

benutzen

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

Passen Sie nur die benötigten Parameter an und setzen Sie die anderen auf Null.

Wenn Sie andere vorhandene Füllungen beibehalten möchten, verwenden Sie yourView.getPaddingLeft(), yourView.getPaddingTop() usw.

66
Droidman

Normalerweise erstelle ich eine einfache Utility-Methode, um die anderen Füllungen nicht zu vergessen oder zu verschieben:

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

Später verwendet werden, dp-Einheiten bereitstellen, wie in xmls:

Utils.setPaddingLeft(myExampleTextView, 10)
17
pkk

Der folgende Code funktioniert einwandfrei.

float scale = getResources().getDisplayMetrics().density;
int dpAsPixels = (int) (sizeInDp*scale + 0.5f);
0
murugan mani

Sie können dies auch verwenden

setPadding(view, 500, Padding.TOP);

mit Hilfe einer @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