填充在某些设备上不起作用

Padding doesn't work on some devices

我在将填充设置为 EditText 期间遇到了一个奇怪的问题。 xml 看起来像这样:

<EditText
    android:layout_width="270dp"
    android:layout_height="55dp"
    android:ems="10"
    android:id="@+id/etEmail"
    android:textStyle="bold"
    android:layout_gravity="center_vertical"
    android:textColor="#FFFFFF"
    android:hint="Or Use your Email"
    android:inputType="textEmailAddress"
    android:layout_alignLeft="@+id/textView6"
    android:layout_alignStart="@+id/textView6"
    android:textColorHint="#FFFFFF"
    android:background="@drawable/line_white"
    android:paddingLeft="16.5dp"
    android:layout_marginTop="10dp"
    android:paddingRight="2dp" />

这是三星 Note 2 (Android 5.0.1) 的屏幕截图:

...和 ​​LG G3 (Android 4.4.2):

如您所见,android:paddingLeft 不适用于 LG。

可能是什么原因?

谢谢。


更新: 布局边界 (LG):

这是dpi设备问题。利用 "dimen" 文件夹,为不同的设备屏幕尺寸提供不同的 dp。当然,这将解决您的问题。

android:paddingLeft="@dimen/yourValueName"

更新到 API 级别 21 后,通过 xml 的 EditText 填充不起作用。
但 EditText 填充有效,如果它以编程方式定义。

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

您可以在 android issue tracker.

上跟踪此问题

还有一些其他替代方案,在问题跟踪线程中进行了讨论。

我在 HTC One X 上注意到了这一点。这并不能解决您的特定问题,但将 paddingStart 更改为 paddingLeft 对我有用。