2013-08-21 8 views
7

Sto cercando di personalizzare il mio indicatore di scheda di ActionBar seguente this riferimento, invece sto ottenendo l'errore:alcuna risorsa trovata per @ stile/Widget.Holo.ActionBar.TabView

Error retrieving parent for item: No resource found that matches the given name '@style/Widget.Holo.ActionBar.TabView'.  

SDK minima è impostata a 14, target SDK = 18. Qualche idea?

EDIT:

Ho già i seguenti stili che funzionano:

 <style name="sMain" parent="@android:style/Theme.Holo"> 
    <item name="android:icon">@android:color/transparent</item> 
    <item name="android:actionBarStyle">@style/MyActionBar</item> 
    <item name="android:actionBarDivider">@null</item> 
</style> 

<style name="MyActionBar" parent="android:Widget.Holo.ActionBar"> 
    <item name="android:actionBarDivider">@null</item> 

</style> 
+0

Sei ancora lì? –

+0

oh scusa, ho dimenticato di accettare. Il tuo suggerimento funziona, grazie – Droidman

risposta

31

Si dovrebbe essere fa riferimento

@android:style/Widget.Holo.ActionBar.TabView 

Typo nella documentazione - hanno lasciato fuori dal android:.

+0

'' '@android: style''', no? – elimirks

+0

@elimirks Sì, risolto, grazie. –

1

Questo è ciò che devi fare:

Creare uno stile per la vostra applicazione: Qui sto personalizzando la Tab Bar e il suo testo (sto usando un tema di compatibilità di base ma puoi usare HOLO o qualsiasi cosa tu voglia):

<style name="AppTheme" parent="Theme.AppCompat.Light"> 
     <item name="android:actionBarTabTextStyle">@style/TabTextStyle</item> 
     <item name="android:actionBarTabStyle">@style/TabBarStyle</item> 

     <!-- Support library compatibility (ActionBarCompat) --> 
     <item name="actionBarTabTextStyle">@style/TabTextStyle</item> 
     <item name="actionBarTabStyle">@style/TabBarStyle</item> 
    </style> 

Crea quegli stili:

<style name="TabTextStyle" parent="@style/Widget.AppCompat.ActionBar.TabText"> 
    <item name="android:textColor">@color/ab_tab_txt</item> 
</style> 

<style name="TabBarStyle" parent="@style/Widget.AppCompat.ActionBar.TabView"> 
    <item name="android:background">@drawable/tab_indicator</item> 
</style> 

per il colore e drawable, è possibile creare un selettore che permette la scheda per modificare sulla base di clic e selezione:

File: res/colore/ab_tab_txt (sto usando il file a colori da res/valori per impostare le mie costanti, ma è possibile posizionare il colore in questo modo: #FFF) res

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item android:state_selected="true" android:color="@color/ab_tab_txt_selected"/> 
     <item android:color="@color/ab_tab_txt_unselected"/> 
    </selector> 

file/drawable/tab_indicator

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Non focused states --> 
    <item android:state_focused="false" 
     android:state_selected="false" 
     android:state_pressed="false" 
     android:drawable="@android:color/transparent" /> 
    <item android:state_focused="false" 
     android:state_selected="true" 
     android:state_pressed="false" 
     android:drawable="@drawable/tab_selected_example" /> 

    <!-- Focused states --> 
    <item android:state_focused="true" 
     android:state_selected="false" 
     android:state_pressed="false" 
     android:drawable="@drawable/tab_unselected_focused_example" /> 
    <item android:state_focused="true" 
     android:state_selected="true" 
     android:state_pressed="false" 
     android:drawable="@drawable/tab_selected_focused_example" /> 

    <!-- Pressed --> 
    <!-- Non focused states --> 
    <item android:state_focused="false" 
     android:state_selected="false" 
     android:state_pressed="true" 
     android:drawable="@drawable/tab_unselected_pressed_example" /> 
    <item android:state_focused="false" 
     android:state_selected="true" 
     android:state_pressed="true" 
     android:drawable="@drawable/tab_selected_pressed_example" /> 

    <!-- Focused states --> 
    <item android:state_focused="true" 
     android:state_selected="false" 
     android:state_pressed="true" 
     android:drawable="@drawable/tab_unselected_pressed_example" /> 
    <item android:state_focused="true" 
     android:state_selected="true" 
     android:state_pressed="true" 
     android:drawable="@drawable/tab_selected_pressed_example" /> 
</selector> 

miei file disegnabili sono NinePatches che creo con questo utile strumento: http://jgilfelt.github.io/android-actionbarstylegenerator/

+0

il problema è che l'SDK non può risolvere @ style/Widget.AppCompat.ActionBar.TabView Si prega di verificare la mia domanda di updatet – Droidman

+0

Beh sì, sto usando AppCompat per versioni API inferiori. A meno che non si abbia davvero bisogno di usare Min SDK 14, è possibile utilizzare ActionBarCompat per qualsiasi dispositivo fino all'SDK 7. Comunque, nel tuo caso, questo dovrebbe essere utile: http://android-developers.blogspot.se/2011/04 /customizing-action-bar.html – CristianGuerrero

+0

Cambiarlo in Widget.Holo.ActionBar – CristianGuerrero