Android:以编程方式设置textview的一个填充

我想以编程方式设置textview的顶部填充。 我知道你可以用方法setPadding()来做到这一点。 但问题是这种方法需要4个参数:左,上,右,下。 我不想改变左,右和底,我只是想改变顶部填充。

那可能吗?

Solutions Collecting From Web of "Android:以编程方式设置textview的一个填充"

使用

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

仅调整所需的参数,并将其他参数设置为零。

如果需要保留其他现有的填充,请使用yourView.getPaddingLeft()yourView.getPaddingTop()等。

我通常创建一个简单的实用工具方法,只是为了不忘记或错放其他填充:

 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) 

你也可以用这个

 setPadding(view, 500, Padding.TOP); 

借助@IntDef定义:

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