2011-06-22 28 views
1

我有一個按鈕,是具有:在初始化時的Android setColorFilter不更新按鈕

.setClickable(false); 

.getBackground().setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY); 

然後我等待GPS信號,當找到一個GPS信號時,我將setClickable設置爲true,並將ColorFilter設置爲null。這是行得通的,但不會更新按鈕,除非屏幕在任何地方被觸摸。

我確定這不是GPS代碼中的一些循環錯誤,因爲一旦這個按鈕被按下,另一個被設置爲可點擊並且過濾器爲空,但是完全相同的事情發生。

任何人都曾經歷過這個?它在這兩個2.2和2.3

繼承人發生在按鈕的ActionListener樣本:

setgps1.setOnClickListener(new OnClickListener(){ 
     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      if(!gps1set) 
      { 
       gps1set = true; 
       setgps1.setText("Reset"); 
       latitude1.setText(latitude1.getText()+ " +/-"+gpsaccuracy+"m"); 
       longitude1.setText(longitude1.getText()+ " +/-"+gpsaccuracy+"m"); 
       altitude1.setText(altitude1.getText() + " +/-"+gpsaccuracy+"m"); 
       latitude1.setTextColor(Color.GREEN); 
       longitude1.setTextColor(Color.GREEN); 
       altitude1.setTextColor(Color.GREEN); 
       save.setClickable(true); 
       save.getBackground().setColorFilter(null); 


      } 
      else 
      { 
       gps1set = false; 
       setgps1.setText("Set GPS 1"); 
       latitude1.setText(""+lat1); 
       longitude1.setText(""+lon1); 
       altitude1.setText(""+alt); 
       latitude1.setTextColor(Color.WHITE); 
       longitude1.setTextColor(Color.WHITE); 
       altitude1.setTextColor(Color.WHITE); 
       save.setClickable(false); 
       save.getBackground().setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY); 

      } 
     } 

    }); 

回答

0

如果有人來到這裏......你必須調用:

save.invalidateSelf(); 

改變後在更新的apis中的背景。