在API 21或更高版本上使用useCompatPadding进行不一致的FloatingActionButton填充

时间:2017-06-02 04:52:45

标签: android android-layout android-support-library

我有两个迷你FAB彼此相邻,如下所示:

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/zoom_in_fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:srcCompat="@drawable/ic_zoom_in"
        app:fabSize="mini"
        app:useCompatPadding="true"/>

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/zoom_out_fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:srcCompat="@drawable/ic_zoom_out"
        app:fabSize="mini"
        app:useCompatPadding="true"/>

</LinearLayout>

在大多数情况下这看起来很好,除非在布局之前禁用其中一个按钮(使用fab.setEnabled(false)Then it looks like this

缩小FAB左侧的填充似乎较少,虽然您无法在此特定图像中看到它,但顶部的填充也较少。这仅在我使用app:useCompatPadding="true"时发生,而不是像android:layout_margin="12dp"那样(在API 21之前和之后看起来不一致)。

这仅在API 21或更高版本上发生。它在API 17-19上看起来很完美。

我的假设是支持库中存在一个错误(我使用的是25.3.1),其中FAB的高程用于在绘制布局之前设置边距,但它没有&# 39;如果FAB被禁用,则考虑FAB没有升高的情况。

是否有其他人遇到此问题或是否有解决方法?欢呼声。

1 个答案:

答案 0 :(得分:0)

最好使用两个网站下方的完整自定义制作按钮,或者编写从ImageViewImageButtonFloatingActionButton扩展的完整自定义视图。

如果不支持像useCompatPadding这样的所有属性,有时很难控制并使应用程序崩溃。

Android Floating Action Buttons Libraries 1

Android Floating Action Buttons Libraries 2