2017-07-30 65 views
-2

我想要使用getresources.getColor(resource id)獲取顏色元素,但是android會告訴我它已被棄用使用getresources.getColor(resource id, theme)如何使用新版本的getresources()。getColor?

如何告訴它使用什麼主題?我曾嘗試R.style.AppTheme但我得到一個錯誤,因爲這是一個int值

public class TodoListItemView extends AppCompatTextView { 
public TodoListItemView(Context context, AttributeSet attributeSet, int ds) { 
    super(context, attributeSet, ds); 
    init(); 
} 

public TodoListItemView(Context context) { 
    super(context); 
    init(); 
} 

public TodoListItemView(Context context, AttributeSet attributeSet) { 
    super(context, attributeSet); 
    init(); 
} 

private Paint marginPaint; 
private Paint linePaint; 
private int paperColor; 
private float margin; 

private void init() { 
    Resources myResources = getResources(); 

    marginPaint = new Paint(Paint.ANTI_ALIAS_FLAG); 
  • marginPaint.setColor(getResources()的getColor(R.color.notepad_margin)。);

    linePaint = new Paint(Paint.ANTI_ALIAS_FLAG); 
    
  • linePaint.setColor(myResources.getColor(R.color.notepad_lines));

  • paperColor = myResources.getColor(R.color.notepad_paper);

    margin = myResources.getDimension(R.dimen.notepad_margin); 
    

    }

    @Override 公共無效的onDraw(帆布帆布){ canvas.drawColor(paperColor);

    canvas.drawLine(0, 0, getMeasuredHeight(), 0, linePaint); 
    canvas.drawLine(0, getMeasuredHeight(), getMeasuredWidth(), getMeasuredHeight(), linePaint); 
    
    canvas.drawLine(margin, 0, margin, getMeasuredHeight(), marginPaint); 
    
    canvas.save(); 
    canvas.translate(margin, 0); 
    
    super.onDraw(canvas); 
    canvas.restore(); 
    

    } }

任何幫助不勝感激。

回答

1

使用ContextCompat.getColor(context, R.color.your_color);

+0

是的。這是處理支持不同API的推薦方式。 – Gary99

+0

使用null作爲主題清除錯誤,但應用程序無法啓動。 – user182162

+0

我試過使用ContextCompat,但我不斷收到版本錯誤的sdk – user182162

0

感謝您的所有輸入。 ContextCompat.getColor就像修復錯誤一樣工作。接口,枚舉錯誤是由於多餘的右括號。

我唯一的抱怨是,現在的應用程序不運行。模擬器上會顯示一條消息,指出應用程序已停止工作。沒有機會測試這些變化。

相關問題