填充在某些设备上无法使用

8

我在给EditText设置padding时遇到了一些奇怪的问题。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)的屏幕截图: enter image description here ...还有LG G3 (Android 4.4.2)的屏幕截图: enter image description here 如您所见,android:paddingLeft在LG上不起作用。
可能的原因是什么?
谢谢。
更新: 布局界限 (LG): enter image description here

1
它必须能够工作...由于设备的不同dpi,填充变化不定...尝试使用50这样的大值而不是16.5dp来检查它是否有效?如果有效,请告诉我。 - Salmaan
前往开发者选项并勾选显示布局边界。然后发布您的屏幕截图... - Salmaan
@Salmaan 帖子已更新。 - Mark Korzhov
Note 2的PPI为265,而G3的PPI几乎是Note的两倍,即538。你应用了多少填充? - Salmaan
1
刚刚发现 API 级别 21 存在问题。如果以程序方式解决,tv.setPadding(20, 20, 20, 20) 将能正常工作。 - Salmaan
显示剩余2条评论
3个回答

2
自API 21之后,通过XML定义的EditText填充(padding)不起作用。但是,如果以编程方式定义,则可以使用EditText填充(padding)。
editText.setPadding(10, 0, 0, 0);

您可以在Android问题跟踪器上跟踪此问题。在该问题跟踪线程中还讨论了其他一些替代方法。

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

0
这是dpi设备问题。利用“dimen”文件夹,为不同的设备屏幕大小提供不同的dp。肯定能解决你的问题。
android:paddingLeft="@dimen/yourValueName"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接