Вот мой EditText. Моя проблема в том, что Android игнорирует layout_marginEnd в Lollipop и выше и вместо этого использует layout_marginRight. См две скриншоты ниже:Android API 21 игнорирует layout_marginEnd и использует layout_marginRight вместо этого в EditText
<EditText
android:id="@+id/foo_count_edit_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/foo_container"
android:layout_marginEnd="20dp"
android:layout_marginRight="100dp"
android:layout_marginTop="-6dp"
android:hint="@string/foo_default_value"
android:imeOptions="actionDone"
android:inputType="number"/>
Как можно видеть, в API 21 (слева) маржа 100dp, взятые из layout_marginRight и не layout_marginEnd.
Edit: @ErnirErlingsson пригвоздил: Нужно включить Android: supportsRtl в манифесте, чтобы использовать layout_marginEnd вместо layout_marginRight. Спасибо.
Edit 2: Однако обратите внимание, что в API 17 (правый скриншот) правый край берутся из layout_marginEnd в то время как андроид: supportsRtl ложна.
Я знаю, что конец заменяет право в API> = 17, однако я должен сохранить старый, поскольку я все еще поддерживаю API14. Кроме того, я пробовал это приложение на реальном устройстве Lollipop и так же, как здесь, Lollipop игнорирует новый атрибут layout_marginEnd. –
Я отредактировал свой отзыв –
Кто-нибудь знает, будет ли способ высасывать все дублирование позже, когда compat больше не понадобится? Какой-то отстой, чтобы сделать все это ... – Rob