2013-03-11 5 views
7

を参照するから引き出し可能を取得するために、どのように私は私のアプリ内でのテーマとスタイルを定義しました。 (描画可能)アイコンが属性が

私はdialogfragmentに良いイメージを使用するプログラムで描画可能を取得する必要が
<style name="CustomTheme" parent="android:Theme.Holo"> 
    <item name="myicon">@drawable/ajout_produit_light</item> 

として

<attr name="myicon" format="reference" /> 

とスタイルとしてスタイルファイル内の参照を使用して定義されています。 私は

mydialog.setIcon(R.style.myicon); 

ようにする場合は、私はidが0に等しい取得するので、何の画像

は私がそのような別のものを試みたが、結果は常にある

int[] attrs = new int[] { R.drawable.myicon}; 
TypedArray ta = getActivity().getApplication().getTheme().obtainStyledAttributes(attrs); 
Drawable mydrawable = ta.getDrawable(0); 
mTxtTitre.setCompoundDrawables(mydrawable, null, null, null); 

のようなものを使用しようとしたん0またはnull: -/

私はこれを行うことができますどのように?

答えて

11

私はあなたがリソースを使用してmyDialogのアイコンを設定しようとしているとR.styleが、あなたの他のコードを介してアクセスしようとしているかのようにそれが思わ Access resource defined in theme and attrs.xml android

TypedArray a = getTheme().obtainStyledAttributes(R.style.AppTheme, new int[] {R.attr.homeIcon});  
int attributeResourceId = a.getResourceId(0, 0); 
Drawable drawable = getResources().getDrawable(attributeResourceId); 
+5

思っていたことを他の誰のためにa.recycle –

+0

を呼び出すことを忘れないでください: 'a.recycle()は'割り当てられたメモリが使用されなくなったと 'A'に関連付けられたデータをに戻すことができることを通知しませんガベージコレクションを待つのではなく、すぐにメモリプールを使用します。回答として[ここ](http://stackoverflow.com/questions/7252839/what-is-the-use-of-recycle-method-in-typedarray) – Prof

0

に解決策を見つけましたあなたがR.drawableにあるリソースを持っていると信じるようになります

これを念頭において、myDialog.setIcon(R.drawable.myicon)で必要な効果を得ることができるはずです。

関連する問題