使用ColorStateList的Android FAB setBackgroundTintList不起作用

当NFC未启用时,我想要改变NFC扫描FAB的颜色。 我已经设法在应用程序启动时成功更改颜色,但是如果用户点击FAB并启用NFC,则颜色不会更改为原色。 日志说,但是,变化不会发生。

我的minSdkVersion = 15

XML:

 <android.support.design.widget.FloatingActionButton android:id="@+id/fab_scan_nfc" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" app:backgroundTint="@color/colorPrimary" app:borderWidth="0dp" app:elevation="6dp" app:fabSize="mini" app:fab_colorNormal="@color/colorPrimary" app:fab_colorPressed="@color/colorPrimaryDark" app:fab_colorRipple="@color/colorAccent" app:srcCompat="@drawable/ic_nfc_n" /> 

科特林:

 if (!isNFCEnabled) { Log.d(TAG, "Change NFC fab colour to disabled.") fab_scan_nfc.backgroundTintList = ColorStateList.valueOf(R.color.colorDisabled) } else { Log.d(TAG, "Change NFC fab colour to primary.") fab_scan_nfc.backgroundTintList = ColorStateList.valueOf(R.color.colorPrimary) } 

这与Java相同:

 if (!isNFCEnabled) { Log.d(TAG, "Change NFC fab colour to disabled.") fab_scan_nfc.setBackgroundTintList = ColorStateList.valueOf(R.color.colorDisabled); } else { Log.d(TAG, "Change NFC fab colour to primary.") fab_scan_nfc.setBackgroundTintList = ColorStateList.valueOf(R.color.colorPrimary); } 

作为副作用 – 当代码应用禁用的颜色背景色调时,FAB上有一个看起来像触摸指示器的小圆圈。 这与使用颜色状态列表有关吗?