Android: установить только одно текстовое дополнение
Я хочу установить верхнее дополнение текста в программном виде. Я знаю, что вы можете сделать это с помощью метода setPadding(). Но проблема в том, что этот метод требует 4 параметра: левый, верхний, правый, нижний. Я не хочу менять левый, правый и нижний, я просто хочу изменить верхнее дополнение.
Возможно ли это?
Ответы
Ответ 1
использование
yourTextView.setPadding(0, 10, 0, 0);
Отрегулируйте только нужные параметры и установите остальные равными нулю.
Если вам нужно сохранить другие существующие прокладки, используйте yourView.getPaddingLeft()
, yourView.getPaddingTop()
и т.д.
Ответ 2
Я обычно создаю простой способ утилиты, чтобы просто не забыть или неправильно использовать другие прокладки:
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)
Ответ 3
Вы также можете использовать это
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;
}
Ответ 4
Ниже код работает нормально.
float scale = getResources().getDisplayMetrics().density;
int dpAsPixels = (int) (sizeInDp*scale + 0.5f);