我正在尝试通过styles.xml设置标签样式。这是我的代码:
tabHost.getTabWidget().getChildAt(0).setBackgroundResource(R.style.tabsel_bg_style);
tabHost.getTabWidget().getChildAt(1).setBackgroundResource(R.style.tab_bg_style);
在styles.xml中:
<style name="tabsel_bg_style" parent="@android:style/Theme.Holo.Light">
<item name="android:tabWidgetStyle">@style/tabsel_bg_style1</item>
</style>
<style name="tabsel_bg_style1" parent="@android:style/Widget.TabWidget">
<item name="android:background">@drawable/tab_bg_img</item>
</style>
<style name="tab_bg_style" parent="@android:style/Theme.Holo.Light">
<item name="android:tabWidgetStyle">@style/tab_bg_style1</item>
</style>
<style name="tab_bg_style1" parent="@android:style/Widget.TabWidget">
<item name="android:background">@color/White</item>
但我得到例外:
android.content.res.Resources$NotFoundException: Resource ID #0x7f0b0002
我知道这很简单但不知道我哪里出错了?
答案 0 :(得分:0)
setBackgroundResource(int resId)
的参数应该是 Drawable 的ID,而不是样式。
tabHost.getTabWidget().getChildAt(0)
.setBackgroundResource(R.drawable.tab_bg_img);
据我所知,没有办法将样式应用于XML布局之外的元素。如果您通过代码创建了View,则可以使用构造函数的第三个参数来设置默认样式。
public View(Context context, AttributeSet attrs, int defStyle) {
...
}