2016-03-09 49 views
1

我試圖圍繞在材質設計應用中使用顏色進行包裝。我有一個自定義視圖,它在onDraw方法中執行一些操作,我想使用可用於應用的顏色並與材質設計保持一致。但是,如何訪問我的java代碼中的主要,次要,字體(等)顏色?在我的自定義視圖中使用材質設計顏色onDraw方法

回答

1

下面是如何通過編程訪問顏色(在colors.xml定義)

private int getColor(int colorAttr) { 
    TypedValue typedValue = new TypedValue(); 
    TypedArray a = mContext.obtainStyledAttributes(typedValue.data, new int[] { colorAttr }); 
    int color = a.getColor(0, 0); 
    a.recycle(); 
    return color; 
} 

//examples accessing colors 
int colorAccent = getColor(R.attr.colorAccent); 
int colorPrimary = getColor(R.attr.colorPrimary); 
+0

所以,這是一樣選擇一個主題(說暗),然後使用此代碼檢索主要和次要顏色?我沒有定義任何顏色XML文件。有沒有失蹤的一步? – xrd

+0

那麼,爲了與您在應用程序中爲材料設計定義顏色調色板的方式保持一致,您需要定義colorPrimary,colorPrimaryDark,colorAccent。在colors.xml中執行此操作(可能需要在值文件夾中進行此操作)。現在,它將訪問您正在使用的主題定義的主要顏色。所以如果你沒有明確地定義它們,它只會抓住那個主題的默認值(我很確定)。 –