欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

FloatingActionButton动态更换背景色

程序员文章站 2022-10-25 17:24:39
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/186 FloatingActionButton 动态更换背景色 最近碰到了个需求场景,需要动态切换FloatingActionButton的背景色 先看下xm ......

版权声明:本文为xing_star原创文章,转载请注明出处!

本文同步自

floatingactionbutton 动态更换背景色

最近碰到了个需求场景,需要动态切换floatingactionbutton的背景色
先看下xml中的布局
<android.support.design.widget.floatingactionbutton
android:id=”@+id/fab_main_circle”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:src=”@drawable/ic_photo_album_white_48dp”
app:fabsize=”normal”
app:backgroundtint=”@color/colorprimarydark”/>
floatingactionbutton的图片源是ic_photo_album_white_48dp ,这是一张纯色的图片,图片没有背景色,需要通过app:backgroundtint设置背景色。
 
当我们的需求出现动态更改背景色时,就会碰到问题.
colorstatelist colorstatelist = contextcompat.getcolorstatelist(getapplicationcontext(), r.color.red);
fabdownloadcircle.setbackgroundtintlist(colorstatelist);
多次执行这段设置背景色的代码,会出现更改不了背景色,背景色始终保持在某一特定的色值。很是奇怪。
google了一番,也没有找到合适的答案。
最终到floatingactionbutton的源码里面,找到了一个api,setbackgroundtintmode。问题得到解决。
 
完整的代码如下:
colorstatelist colorstatelist = contextcompat.getcolorstatelist(getapplicationcontext(), r.color.colorprimarydark);
fabrandomcircle.setbackgroundtintmode(porterduff.mode.src_atop);
fabrandomcircle.setbackgroundtintlist(colorstatelist);
colorstatelist colorstatelist = contextcompat.getcolorstatelist(getapplicationcontext(), r.color.red;
fabrandomcircle.setbackgroundtintmode(porterduff.mode.src_atop);
fabrandomcircle.setbackgroundtintlist(colorstatelist);