2013-10-15 162 views
0

我試圖通過styles.xml來設置選項卡的樣式。這裏是我的代碼:自定義選項卡:通過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

'Theme.Holo'在搭載Android 2.3及更高版本的設備上不可用。如果您打算支持這些,則應將這些樣式移動到* values-v11 *文件夾中。 – nicopico

+0

我試着將樣式移動到values-v11文件夾,但我仍然得到相同的致命資源異常$ NotFoundException ..任何幫助將不勝感激。 – user2882640

回答

0

setBackgroundResource(int resId)的參數應該是可繪製的的ID,而不是樣式。

tabHost.getTabWidget().getChildAt(0) 
.setBackgroundResource(R.drawable.tab_bg_img); 

據我所知,沒有辦法將樣式應用到XML佈局以外的元素。如果您通過代碼創建了視圖,則可以使用構造函數的第三個參數來設置默認樣式。

public View(Context context, AttributeSet attrs, int defStyle) { 
    ... 
} 
相關問題