Я пытаюсь программно настроить виджет EditText, но в зависимости от устройства мой отступ EditText может изменяться визуально и численно.После настройки простого пустого проекта только с EditText я понял, что значения отступов по умолчанию варьируются в зависимости от устройства (например, эмулируемый Nexus 6 имеет отступы {6, 15, 6, 16}, в то время как эмулируемый пиксель 2 имеет отступы {10, 26,10, 29}).
Значения по умолчанию не представляют особой проблемы, пока у меня не появилось физическое устройство (Samsung S5) с отступом по умолчанию в 0, что на самом деле выглядит непривлекательно.
Я посмотрел на документацию , но это не помогло (может, я посмотрел не в том месте?).Сейчас у меня есть простое исправление:
public void setPadding(int left, int top, int right, int bottom) {
if(left == 0) {
left = 6;
}
if(top == 0) {
top = 15;
}
if(right == 0) {
right = 6;
}
if(bottom == 0) {
bottom = 16;
}
editText.setPadding((int)(left * scalingFactor),
top,
(int)(right * scalingFactor),
bottom);
}
Я передаю значения отступа по умолчанию для editText (то есть editText.getPaddingLeft()
) для параметров.
Пока это работает,но я ненавижу использовать магические числа, и я предполагаю, что это не удастся для разных устройств.Есть ли какой-то универсальный отступ по умолчанию, который я пропустил, или другой способ установить эти значения программно, который я только что пропустил?