Android上的FloatingActionButton布局边距不正确,低于5.0

时间:2015-12-27 21:05:13

标签: android android-design-library

无法理解为什么我的浮动动作按钮有32dp而不是16dp的余量?

<android.support.design.widget.FloatingActionButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/fab"
    android:src="@drawable/ic_add_24"
    android:layout_gravity="bottom|end"
    android:layout_marginRight="16dp"
    android:layout_marginEnd="16dp"
    android:layout_marginBottom="16dp"/>

在Android 5.0(模拟器)上一切正确但在Android 4.3(真实设备)上的边距太大。虽然根布局没有填充或边距。
附:来自Google设计库的FloatActionButton。

Android 4.3 Screenshot

1 个答案:

答案 0 :(得分:1)

显然要实现这一目标的唯一方法是使用特定于API的样式。在普通值/ styles.xml中,输入如下内容:

<style name="floating_action_button">
<item name="android:layout_marginLeft">0dp</item>
<item name="android:layout_marginTop">0dp</item>
<item name="android:layout_marginRight">8dp</item>
<item name="android:layout_marginBottom">0dp</item>

然后在 values-v21 / styles.xml 下,使用:

<style name="floating_action_button">
<item name="android:layout_margin">16dp</item>

最后,将样式应用于FloatingActionButton:

<android.support.design.widget.FloatingActionButton
...
style="@style/floating_action_button"
...
/>

正如Zielony所指出的那样,在API&lt; 20中,按钮呈现自己的阴影,这会增加视图的整体逻辑宽度,而在API&gt; = 20时,它会使用新的Elevation参数到视图宽度。