以编程方式在Android中基于主题设置图像

时间:2011-08-05 15:08:44

标签: android image resources themes

我想根据当前主题设置ImageView的图像源。我定义了两个主题,每个主题都有一个ImageView图标。

我在themes.xml中有以下内容:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Theme.Android">
        <item name="tabIconContacts">@style/tabContacts_Android</item>
    </style>
    <style name="Theme.Earthy">
        <item name="tabIconContacts">@style/tabContacts_Earthy</item>
    </style>
</resources>
attr.xml中的

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

以及styles.xml中的以下内容:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="tabContacts_Earthy">
        <item name="android:src">@drawable/theme1_tab_contacts</item>
    </style>
    <style name="tabContacts_Android">
        <item name="android:src">@drawable/theme2_tab_contacts</item>
    </style>
</resources>

我将setTheme()应用于onCreate()的顶部。在XML中定义的资源上设置背景图像可以正常工作。我正在努力寻找一种在下面的代码中设置图像的好方法:

LayoutInflater li = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View tabIndicator = li.inflate(R.layout.tab_indicator, mTabHost.getTabWidget(), false);
ImageView iconView = (ImageView) tabIndicator.findViewById(R.id.icon);
iconView.setImageResource( R.style.tabIconContacts ));

是否可以以这种方式换出可绘制资源?我发现了很多提及obtainStyledAttributes的文章,但它们似乎并不适用于这种情况。

我也无法在tab_indicator的XML定义中设置图像,因为图标会随每个标签和每个主题(总共大约12个图标)而变化。

非常感谢任何帮助。

0 个答案:

没有答案