浮动操作按钮:不支持设置自定义背景

4
    <android.support.design.widget.FloatingActionButton
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/insert_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/add"
        android:layout_marginRight="20dp"
        android:layout_marginBottom="20dp"
        android:layout_alignBottom="@id/list_view"
        android:layout_alignRight="@id/list_view"
        android:background="#649696"
        />

这段代码本身没问题,但是在加入两行代码后就崩溃了。

        android:backgroundTint="#649696"
        app:rippleColor="#FFFFFF"

崩溃日志:

在 Android 4.1 之前,方法 android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) 会错误地覆盖 android.graphics.drawable.Drawable 中的 package-private 方法。

I/FloatingActionButton: 不支持设置自定义背景。

依赖级别:

compileSdkVersion 27
defaultConfig {
    applicationId ""
    minSdkVersion 23
    targetSdkVersion 27
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

谁能告诉我如何解决这个问题?


2
请使用命名空间xmlns:app="http://schemas.android.com/apk/res-auto"下的app:backgroundTint属性代替android:background(移除该属性)。 - Jay
1
@VishalChhodwani ~ 我特别指的是 app:backgroundTint;而不是 android:backgroundTint。 ( ͡° ͜ʖ ͡°) - Jay
我也在谈论 app:backgroundTint 而不是 android:backgroundTint - Vishal Chhodwani
1
你看过他的 build.gradle 文件吗?他的目标是面向23+设备,并且我们使用 app 属性来提供向后兼容性。别浪费时间了。 - Jay
4个回答

2
很遗憾,即使您没有设置背景或者色调,此警告也会显示。但是,为了摆脱它,您可以设置属性android:background="@null",这将忽略它,正如一个用户从官方材料库Github存储库中建议的那样。(这个问题的原因是一个内部问题,在一些调用器中被调用,这可能在未来版本的材料设计库中得到解决)。最初的回答。

不要使用android:background来设置背景。无需使用android:background="@null"。 如果您想更改背景颜色,请使用app:backgroundTint或android:backgroundTint(适用于API 21及更高版本)。 - Rahul Mandaliya

0
请使用以下属性设置背景:
<android.support.design.widget.FloatingActionButton
    ...
    app:backgroundTint="@color/ic_action"
    android:src="@drawable/ic_plus" />

移除 android:backgroundTint 属性


0

这是一个愚蠢的错误,当使用外部系统API时,需要使用“app”作为命名空间,而不是“android”。

因此,正确的代码应该是:

app:backgroundTint="#649696"

1
实际上,即使使用“app”前缀,警告消息仍会出现。 - Dror

0
你需要在你的 FAB 按钮里添加 app:backgroundTint="@color/your_color" 以改变背景颜色。
 <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|end"
            app:elevation="2dp"
            android:layout_margin="16dp"  
            android:src="@drawable/ic_close_black_24dp"
            app:backgroundTint="@color/colorPrimary"
            app:fabSize="normal" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接