我想知道如何改变浮动操作按钮的背景色,当它被按下2秒后被禁用。我也希望它在2秒的持续时间结束后恢复到原来的颜色。
这是按下时2秒延迟的代码。此代码位于mainActivity中的一个片段中。
appBar.setExpanded(true, true);
fab.setVisibility(View.VISIBLE);
fab.setImageResource(R.drawable.ic_phone_white_18dp);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fab.setClickable(false);
Timer buttonTimer = new Timer();
buttonTimer.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
fab.setClickable(true);
}
});
}
}, 2000);
我试过在文档中使用
StateListDrawable
方法,但没有遇到任何有效的方法。这是用于fab颜色主题的xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/themeColorPressed" android:state_pressed="true"/>
<item android:color="@color/themeColorPressed" android:state_checked="true"/>
<item android:color="@color/themeColorPressed" android:state_selected="true"/>
<item android:color="@color/themeColorPressed" android:state_enabled="false"/>
<item android:color="@color/themeColor" android:state_enabled="true"/>
</selector>
最佳答案
禁用时只需调用fab.setBackgroundColor(Color.GRAY);
(或任何颜色)。也可以使用fab.setBackgroundColor(getResources().getColor(R.color.colorAccent0));
来使用资源颜色。