浮动操作按钮没有填充,尽管 app:useCompatPadding="true"

Floating Action Button has no padding despite app:useCompatPadding="true"

对于我的一个活动中的布局,我在右下角有一个浮动操作按钮。但出于某种原因,尽管设置了 app:useCompatPadding="true",但按钮的边距没有填充。

这里是 XML 代码:

<?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/add_class_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:src="@drawable/ic_add_white_24dp"
        app:useCompatPadding="true" />

    <ListView
        android:id="@+id/android:list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></ListView>

</android.support.design.widget.CoordinatorLayout>

这是布局的图片:

希望能提供一些帮助,谢谢!

原因是你没有给它提供保证金。这应该有效

 <android.support.design.widget.FloatingActionButton
    android:contentDescription="@string/menu_compose"
    android:id="@+id/add_class_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|right|end"
    android:layout_marginBottom="16dp"
    android:layout_marginRight="16dp"
    android:layout_marginEnd="16dp"
    app:useCompatPadding="true"
    android:src="@drawable/ic_add_white_24dp"
    app:fabSize="normal"/>

试试这个

<?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">


    <ListView
        android:id="@+id/android:list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <android.support.design.widget.FloatingActionButton
        android:layout_margin="16dp"
        android:id="@+id/add_class_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        app:useCompatPadding="true" />

</android.support.design.widget.CoordinatorLayout>

app:useCompatPadding="true" 将使不同 API 版本之间的填充一致。但是,这似乎仍然使默认边距稍微偏离一点,因此您可能需要调整它们。但至少不再需要 API 特定样式。

您可以使用 API 特定的样式轻松完成此操作。在你的正常 values/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>
</style>

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

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

并将样式应用到您的 FloatingActionButton:

<android.support.design.widget.FloatingActionButton
...
style="@style/floating_action_button"
app:useCompatPadding="true"
...
/>

正如其他人所指出的,在 API <20 中,按钮呈现自己的阴影,这增加了视图的整体逻辑宽度,而在 API >=20 中,它使用不影响视图宽度的新高程参数。

我希望这对你有用。

按以下方式使用

<android.support.design.widget.FloatingActionButton
            android:id="@+id/fabImage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right|bottom"
            android:layout_margin="16dp"
            android:visibility="visible"
            app:backgroundTint="@color/colorAccent"
            app:borderWidth="0dp"
            app:elevation="0dp"
            app:fabSize="normal"
            app:pressedTranslationZ="12dp"
            app:rippleColor="#dadada"
            app:srcCompat="@mipmap/ic_image" />