Android Studio中白色vector图标在FloatingActionButton显示为黑色
问题根因
Material Design组件库的FloatingActionButton默认会对内部的src图标应用全局主题默认的tint着色,该优先级远高于矢量图自身设置的fillColor和android:tint属性,所以你设置的白色会被默认的黑色tint覆盖。同时你当前布局里存在背景着色的配置冲突,app:backgroundTint="@null"会覆盖掉你设置的蓝色背景。
注意:需要确保布局根节点已经声明了app命名空间xmlns:app="http://schemas.android.com/apk/res-auto",否则app:开头的属性会失效。
可行解决方法
- 方案1:直接在FloatingActionButton布局中显式指定图标着色,无需修改矢量图资源
移除冲突的app:backgroundTint="@null",新增app:tint指定图标颜色即可,修正后的布局代码如下:
<com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/default_activity_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_alignParentBottom="true" android:layout_marginStart="32dp" android:layout_marginTop="32dp" android:layout_marginEnd="32dp" android:layout_marginBottom="32dp" android:backgroundTint="@android:color/holo_blue_dark" android:src="@drawable/ic_baseline_add" app:tint="@android:color/white"/>
- 方案2:如果需要保留矢量图自身配置的颜色,关闭FAB的默认图标着色即可
在FAB布局中添加app:tint="@null",同时移除冲突的背景置空代码:
<com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/default_activity_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_alignParentBottom="true" android:layout_marginStart="32dp" android:layout_marginTop="32dp" android:layout_marginEnd="32dp" android:layout_marginBottom="32dp" android:backgroundTint="@android:color/holo_blue_dark" android:src="@drawable/ic_baseline_add" app:tint="@null"/>
内容的提问来源于stack exchange,提问作者aileen
相关产品推荐
相关产品推荐

