自定义选项卡:通过styles.xml设置样式选项卡

时间:2013-10-15 13:06:18

标签: android

我正在尝试通过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

我知道这很简单但不知道我哪里出错了?

1 个答案:

答案 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) {
   ...
}