19

アプリ内でテーマとスタイルを定義しました。アイコン (描画可能) は、スタイル ファイル内の参照を使用して次のように定義されます。

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

とスタイル

<style name="CustomTheme" parent="android:Theme.Holo">
    <item name="myicon">@drawable/ajout_produit_light</item>

ダイアログフラグメントで適切な画像を使用するには、プログラムでドローアブルを取得する必要があります。私が好きにしたら

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です:-/

どうすればこれを行うことができますか?

4

4 に答える 4

21

テーマとattrs.xml androidで定義されたAccessリソースで解決策を見つけました

TypedArray a = getTheme().obtainStyledAttributes(R.style.AppTheme, new int[] {R.attr.homeIcon});     
int attributeResourceId = a.getResourceId(0, 0);
Drawable drawable = getResources().getDrawable(attributeResourceId);
于 2013-03-11T13:23:15.433 に答える
-1

リソースを使用して myDialog のアイコンを設定しようとしていて、R.style を介してアクセスしようとしているように見えますが、他のコード セグメントから、R.drawable にリソースがあると思われます。

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

于 2013-03-11T13:26:32.770 に答える