EditText填充属性不适用于API 21和22

时间:2017-05-22 07:39:26

标签: android android-edittext padding android-version

设置EditText的填充值。但是它不能同时运行 21 22 api版本。但是,它适用于 19 23 24

这是我的代码

<style name="LoginEditTextStyle">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_gravity">center_horizontal</item>
        <item name="android:maxLines">1</item>
        <item name="android:paddingLeft">@dimen/login_text_padding</item>
        <item name="android:paddingRight">@dimen/login_text_padding</item>
    </style>

这是我在布局xml中的edittext

<android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
          android:layout_marginTop="@dimen/login_container_child_view_top_margin"
            android:alpha="0">

            <EditText
                android:id="@+id/login_username_editText"
                style="@style/LoginEditTextStyle"
                android:hint="@string/user_name"
                android:inputType="text"
                />

        </android.support.design.widget.TextInputLayout>

21 api版本的结果

enter image description here

for 24 api version

enter image description here

我知道有一个bug的edittext / spinner视图来设置xml的填充值。

我知道这个问题有一些解决方案,比如设置padmatic值programmaticaly。但这对我不起作用。

例如:this accepted solution doesn't work for me

int paddingLeft = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 40, getResources().getDisplayMetrics());
        int paddingRight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 55, getResources().getDisplayMetrics());
        int paddingTop = editText.getPaddingTop();
        int paddingBottom = editText.getPaddingBottom();
        editText.setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。 paddingLeft无法在Android 5.1.1设备上运行。

添加paddingStart代替我解决了问题。

请试一试。