问题
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:
I expect:
回答1:
This is android bug. In future it will be fix.
Bug report on google code.
回答2:
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);
}
}
回答3:
Just replace android:paddingLeft with android:paddingStart, as should be anyway and fixes this bug on those devices.
回答4:
Try to give padding programmatically by using method setLayoutParams() it will work i am hopeful Ref: Example
回答5:
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"
.../>
回答6:
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>
来源:https://stackoverflow.com/questions/26489832/doesnt-work-edittext-padding-in-the-api-21