我想根据当前主题设置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个图标)而变化。
非常感谢任何帮助。