带有ColorStateList的Android FAB setBackgroundTintList不起作用

时间:2017-05-22 08:47:05

标签: android floating-action-button

我想在未启用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上有一个看起来像触摸指示器的较小圆圈。这是否与使用颜色状态列表

有关

0 个答案:

没有答案