FAB с якорем в компоновке координатора имеет дополнительную маржу в андроиде до леденца

У меня есть CoordinatroLayout с FloatingActionButton . Вот мой код:

 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/toolbar_layout" android:layout_above="@+id/actionbar"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="120dp" android:minHeight="?android:attr/actionBarSize" android:background="@color/toolbar_color" /> <ScrollView android:layout_width="match_parent" android:layout_height="wrap_content" > </ScrollView> </LinearLayout> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:clickable="true" app:fabSize="mini" android:src="@mipmap/ic_action_edit" app:layout_anchor="@id/toolbar" app:layout_anchorGravity="bottom|right|end" app:backgroundTint="@color/toolbar_color" /> </android.support.design.widget.CoordinatorLayout> 

Но это выглядит по-разному в устройствах с леденцами и до леллипопа.

Леденец:

Введите описание изображения здесь

Pre-леденец: Введите описание изображения здесь

На самом деле я не добавляю никакого запаса. Но у FAB есть преимущество в устройствах с предварительным леллипопом.

Я также видел эту проблему в примере cheessesquare . Он также показывает разные поля. В чем проблема?

Я не думаю, что вы хотите разместить их без полей. Если бы я понял это правильно, вы сделали это, чтобы посмотреть, что происходит в разных версиях Android.

Вы можете использовать app:useCompatPadding="true" и удалить настраиваемые поля для поддержания одинаковых полей в разных версиях Android

Андроид студийный код

Доказательство концепции

Дизайн

Согласно этой ссылке , это кажется ошибкой в ​​библиотеке дизайна Android. В нем говорится, что:

В API <20 кнопка отображает собственную тень, которая добавляет общую логическую ширину представления, тогда как в API> = 20 она использует новые параметры Elevation, которые не вносят вклад в ширину представления.

Поэтому я должен предоставить два файла ресурсов для поля:

разреш / значение:

 <dimen name= "fab_margin_right">0dp</dimen> 

И в res / values-v21:

 <dimen name = "fab_margin_right">8dp</dimen> 

Начиная с версии 22.2.1 библиотеки поддержки и дизайна предыдущий ответ больше не верен. Дополнительного дополнения нет, если FAB находится внутри CoordinatorLayout.

 <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.FloatingActionButton android:id="@+id/button_show_qr" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="end|bottom" android:src="@mipmap/ic_action_edit" app:backgroundTint="@color/primary" app:borderWidth="0dp" app:elevation="4dp" app:fabSize="normal" app:rippleColor="@color/primary_dark"/> </android.support.design.widget.CoordinatorLayout> 

Этот код будет производить следующие FAB для каждой версии Android.

Введите описание изображения здесь