Ответ 1
Это ошибка Android. В будущем это будет исправлено.
Не работает EditText padding в API 21. Я пытаюсь сделать это в пустом проекте, только с одним editText, но он все равно не работает.
Задание проецирования программно работает, но в моем рабочем проекте у меня много EditTexts с различными paddings и программным программированием - неправильный путь.
В API-интерфейсе 19 xml отлично работает.
Существуют ли какие-либо решения?
Этот мой XML-код EditText:
<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"/>
В результате у меня есть:
Я ожидаю:
Это ошибка Android. В будущем это будет исправлено.
Решил его, создав пользовательский edittext с дополнением и используя его в 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);
}
}
Попробуйте дать заполнение программным путем с помощью метода setLayoutParams() он будет работать, я надеюсь Ссылка: Пример
Не лучший способ обойти проблему, но она работает для меня: вы можете установить атрибут android: layout_height на определенное фиксированное значение и установить андроид: гравитация to center или center_vertical
<EditText
...
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
.../>
Просто замените android:paddingLeft
на android:paddingStart
, как и должно быть, и исправим эту ошибку на этих устройствах.
Решил его в стилях, используя стандартную редакцию Android:
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="android:editTextStyle">@android:style/Widget.EditText</item>
</style>