2011-07-11 8 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

私はまだテーマからプログラム的にスタイルにアクセスする方法がわからないので、2つの別々のボタンでトリックを使用しなければなりませんでした。それぞれに独自のスタイルがあり、1つのボタンのイメージ/スタイルを変更する代わりに、2つのスタイル付きボタンの表示を設定しています。

関連する問題