我试图以编程方式设置EditText小部件,但是根据设备的不同,我的EditText填充在视觉和数字上可能会有所不同。设置了仅带有EditText的简单空白项目后,我意识到默认的填充值因设备而异(例如,仿真的Nexus 6填充了{6,15,6,16},而仿真的Pixel 2填充了{10,26, 10,29})。
在我将物理设备(三星S5)的默认padding-left设置为0时,默认值并不是什么大问题。
我看过documentation,但没有帮助(也许我看错地方了吗?)。现在,我有一个简单的解决方法:
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()
)作为参数。
目前,它一直有效,但是我讨厌使用幻数,并且我想对于不同的设备它将失败。是我错过了一些通用的默认填充,还是以编程方式设置了我刚刚错过的这些值?