2011-07-11 35 views
0

我無法弄清楚如何在代碼中更改ImageButton的圖像資源。我在的themes.xml定義如下主題:使用屬性和主題更改圖像資源

<resources> 
    <style name="MMTheme.Blue"> 
     <item name="playButtonImg">@drawable/play_button</item> 
     <item name="pauseButtonImg">@drawable/pause_button</item> 
    </style> 
</resources> 

屬性在attrs.xml定義:

<resources> 
    <attr name="pauseButtonImg" format="integer"/> 
    <attr name="playButtonImg" format="integer"/> 
</resources> 

現在我想改變的ImageButton的圖像資源。我可以改變它:

playButton.setImageResource(R.drawable.play_button); 

但我想要使用主題。如何使用playByttonImg屬性來更改它,以便我可以爲不同的主題使用不同的圖像?

回答

2

現在我有原來的問題解決方案:

public static int getStyledDrawableId(Context context, int attribute) 
{ 
    TypedArray a = context.getTheme().obtainStyledAttributes(new int[] { attribute }); 
    int id = a.getResourceId(0, -1); 
    return id; 
} 

它返回我繪製的ID當我打電話例如:getStyledDrawableId(getContext(), R.attr.playButtonImg)。上下文必須設置選定的主題。

屬性應該被改變爲參考格式:

<resources> 
    <attr name="pauseButtonImg" format="reference"/> 
    <attr name="playButtonImg" format="reference"/> 
</resources> 
0

我仍然不知道如何從主題programaticaly訪問樣式,所以我不得不使用兩個單獨的按鈕的技巧。每個人都有自己的風格,而不是改變一個按鈕的圖像/風格,我設置兩個風格按鈕的可見性。