我想知道如何改变浮动操作按钮的背景色,当它被按下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));来使用资源颜色。

07-28 02:14
查看更多