2016-07-13 4 views
1

눌렀을 때 2 초 동안 비활성화 된 경우 플로팅 동작 버튼의 배경색을 어떻게 바꿀 수 있는지 파악하려고합니다. 2 초의 지속 시간이 끝나면 원래 색상으로 돌아가고 싶습니다.비활성화 된 경우 FAB 배경색 변경

누를 때의 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.setBackgroundColor(Color.GRAY); 호출 FAB

<?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> 

답변

2

의 색상 테마에 대한 XML (또는를 어떤 색) 당신이 그것을 사용하지 않는 경우. 또한 fab.setBackgroundColor(getResources().getColor(R.color.colorAccent0));을 사용하여 자원 색상을 사용할 수 있습니다.

난 그냥 잘 작동 뭔가를 발견

+0

? 어디에? –

+0

활성화 또는 비활성화 된 경우 변경할 때마다 색상을 변경하십시오. 따라서 팹 코드 내부 (즉,이 경우 팹을 최종 선언해야 함) 또는 주 활동의 onCreate 또는 다른 메서드 내부에 배치 할 수 있습니다. – TheAnonymous010

0

은 ... 첫째로 나는이어야과 같이 색상 선언 위의 버튼 테마의 선택 XML로는, setEnabled() 메소드를 이동했다.

<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/grey" android:state_enabled="false"/> 
<item android:color="@color/themeColor"/> 

가에 할당하는 존경받는 색상 false로 처음에 설정

<?xml version="1.0" encoding="utf-8"?> 

.

그런 다음 Java 코드에서, 당신이 (이 경우 FAB) 설정 타겟팅하고있는 버튼의는, setEnabled 메소드를 호출하고 활성화 또는 온 클릭 방식의 비활성화 여부를 지시하는 부울 값을 사용

       fab.setClickable(false); 
           fab.setEnabled(false); 
           Timer buttonTimer = new Timer(); 
           buttonTimer.schedule(new TimerTask() { 
            @Override 
            public void run() { 
             runOnUiThread(new Runnable() { 
              @Override 
              public void run() { 
               fab.setClickable(true); 
               fab.setEnabled(true); 
              } 
             }); 
            } 
           }, 2000); 
주전원에
+0

비활성화 된 상태의 버튼에 대한 클릭을 수신하지 않으려는 경우 올바른 방법입니다. 예 : 기기에서 NFC가 사용 중지 된 경우 FAB을 사용 중지해야하지만 NFC를 사용하도록 설정하기 위해 사용자에게 알리는 알림 대화 상자를 표시 할 수 없습니다. – marienke