在协调器布局中具有锚点的FAB在android pre-lollipop中具有额外的余量

时间:2015-09-23 15:52:51

标签: android android-layout floating-action-button android-coordinatorlayout

我有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>

但它在棒棒糖和棒棒糖前设备中看起来有所不同。

棒棒糖:

enter image description here

预棒棒糖: enter image description here

实际上我还没有添加任何保证金。但是FAB在棒棒糖前设备中有利润。

我在cheessesquare示例中也看到了这个问题。它也显示出不同的边距。有什么问题?

3 个答案:

答案 0 :(得分:15)

我认为你不想把它们放在边缘。如果我理解正确的话,你已经这样做了,看看在不同版本的android中会发生什么。

  

您可以使用app:useCompatPadding="true"并移除自定义边距,以在不同版本的Android

中保持相同的边距

android studio code

概念证明

design view

答案 1 :(得分:5)

根据this link,它似乎是android设计库中的一个错误。它说:

  

在API&lt; 20中,该按钮呈现自己的阴影,这会增加阴影   视图的整体逻辑宽度,而在API&gt; = 20时,它使用新的   高度参数对视图宽度没有影响。

所以我必须为保证金提供两个资源文件:

RES /值:

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

在res / values-v21中:

{{1}}

答案 2 :(得分:3)

自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>

此代码将在每个Android版本上生成以下FAB。

enter image description here