user3134124
user3134124

Reputation: 397

Doesn't work EditText padding in the API 21

Doesn't work EditText padding in the API 21. I try to do it in empty project, only with single editText, but it still doesn't work.

Set padding programmatically works, but in my work project, I've a lot of EditTexts with different paddings and set padding programmatically isn't right way.

On API level 19 xml padding works well.

Are there any solutions?

This my EditText xml code:

   <EditText
   android:id="@+id/et_text"
   android:text="Text"
   android:paddingLeft="20dp"
   android:paddingStart="20dp"
   android:paddingRight="20dp"
   android:paddingEnd="20dp"
   android:layout_marginLeft="30dp"
   android:layout_marginRight="30dp"
   android:layout_width="match_parent"
   android:layout_height="45dp"/>

In the result, I've got:enter image description here

I expect:

enter image description here

Upvotes: 12

Views: 6880

Answers (6)

user781729
user781729

Reputation:

Just replace android:paddingLeft with android:paddingStart, as should be anyway and fixes this bug on those devices.

Upvotes: 2

aNoviceGuy
aNoviceGuy

Reputation: 286

Solved it by creating a custom edittext with padding and use it in xml.

public class MyEditTextView extends EditText{

public MyEditTextView(Context context) {
    super(context);
    init();
}

public MyEditTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
}

public MyEditTextView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    init();
}

private void init(){
    int paddingLeftRight = (int) getResources().getDimension(R.dimen.edittext_padding);
    int topPadding = this.getPaddingTop();
    int bottomPadding = this.getPaddingBottom();
    setPadding(paddingLeftRight, topPadding, paddingLeftRight, bottomPadding);
}

}

Upvotes: 4

smbd uknow
smbd uknow

Reputation: 2282

Not really the best way to work around the problem, but it works for me: you can set android:layout_height attribute to some fixed value and set android:gravity to center or center_vertical

<EditText
        ...
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:gravity="center"
        .../>

Upvotes: 0

e.shishkin
e.shishkin

Reputation: 1193

Solved it in styles, using android standart edittext:

<style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="android:editTextStyle">@android:style/Widget.EditText</item>
</style>

Upvotes: -1

user3134124
user3134124

Reputation: 397

This is android bug. In future it will be fix.

Bug report on google code.

Upvotes: 8

Intsab Haider
Intsab Haider

Reputation: 3561

Try to give padding programmatically by using method setLayoutParams() it will work i am hopeful Ref: Example

Upvotes: 1

Related Questions