12

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

user3134124
  • 387
  • 4
  • 16

6 Answers6

8

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

Bug report on google code.

user3134124
  • 387
  • 4
  • 16
4

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);
}

}

aNoviceGuy
  • 286
  • 3
  • 10
2

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

r3flss ExlUtr
  • 720
  • 7
  • 17
1

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

Intsab Haider
  • 3,491
  • 3
  • 23
  • 32
  • 1
    In my project, I'm using a lot of edittexts with different paddings and set padding programmatically - isn't rigth way to solve this task. – user3134124 Oct 22 '14 at 09:09
  • 2
    Confirming that setting the padding programmatically works, but I agree with @user3134124 that it's hugely annoying. – tokudu Oct 24 '14 at 01:34
0

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"
        .../>
smbd uknow
  • 2,282
  • 1
  • 14
  • 22
-1

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>
e.shishkin
  • 1,173
  • 12
  • 9