EditText填充在Android中无法正常工作

时间:2016-07-13 05:38:37

标签: android xml android-layout android-studio android-edittext

我在MarshMallow设备上进行了测试。当我为EditText编写xml并将PaddingBottom设置为Retype EditText时。但它不起作用。但是当我将PaddingLeft设置为New PassWord EditText时工作正常。

Approch:1

xml代码:

 <EditText
            android:id="@+id/change_password_old_password_edittext"
            android:layout_below="@+id/change_password_mobileNumber_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Old Password"
            android:layout_marginTop="20.0dip"
            android:textColorHint="#40000000"
            android:textSize="@dimen/textsize16"/>

        <EditText
            android:id="@+id/change_password_new_password_edittext"
            android:layout_below="@+id/change_password_old_password_edittext"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="New Password"
            android:layout_marginTop="20.0dip"
            android:textColorHint="#40000000"
            android:paddingLeft="10dip"
            android:textSize="@dimen/textsize16"/>

        <EditText
            android:id="@+id/change_password_retype_password_edittext"
            android:layout_below="@+id/change_password_new_password_edittext"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Retype Password"
            android:layout_marginTop="20.0dip"
            android:paddingBottom="10dip"
            android:textColorHint="#40000000"
            android:textSize="@dimen/textsize16"/>

ScreenShot:

enter image description here

Approch:2

然后我决定以编程方式设置PaddingBottom。但它给出了奇怪的输出。

java代码:

OnCreate方法

   EditText change_password_retype_password_edittext = (EditText)findViewById(R.id.change_password_retype_password_edittext);
        change_password_retype_password_edittext.setPadding(0,0,0,10);

输出

enter image description here

  

注意:我已经在MarshmallowLolliPopJellybean进行了测试。但是在所有设备中都没有工作。

2 个答案:

答案 0 :(得分:4)

您没有指定已设置的填充单位,因此默认情况下pixel小于dp,因此结果不符合您的预期。

将像素转换为dp,您将获得解决方案:

int paddingPixel = 10;
float density = getResources().getDisplayMetrics().density;
int paddingDp = (int)(paddingPixel * density);
change_password_retype_password_edittext.setPadding(0,0,0,paddingDp);

有关详细信息,请访问:Add padding on view programmatically

答案 1 :(得分:0)

尝试使用它:

android:drawablePadding="8dp"

此填充将从文本光标中删除drawable 看一下这个例子。enter image description here