Значения заполнения по умолчанию вызывают проблемы при программной установке значений заполнения для виджета EditText - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь программно настроить виджет 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()) для параметров.

Пока это работает,но я ненавижу использовать магические числа, и я предполагаю, что это не удастся для разных устройств.Есть ли какой-то универсальный отступ по умолчанию, который я пропустил, или другой способ установить эти значения программно, который я только что пропустил?

...