2012-08-14 18 views
6

Ich habe seit einigen Tagen auf dieses Problem festgefahren. Kann mir jemand helfen, die unter der ActionBar angezeigten Tabs anzupassen (NavigationMode ist NAVIGATION_MODE_TABS)?Anpassen ActionBar TabBar (ActionBarSherlock)

Ich möchte im Grunde die Hintergrundfarbe der Reiter und die Unterstreichungsfarbe des aktuell ausgewählten Tab ändern. Bisher habe ich das gemacht, aber es funktioniert nicht. Ich verwende ActionBarSherlock.

<style name="Theme.Styled" parent="@style/Theme.Sherlock.Light"> 
    <item name="actionBarStyle">@style/Widget.Theme.Styled.ActionBar</item> 
    <item name="android:actionBarStyle">@style/Widget.Theme.Styled.ActionBar</item> 

    <item name="actionBarTabBarStyle">@style/customActionBarTabStyle</item> 
    <item name="android:actionBarTabBarStyle">@style/customActionBarTabStyle</item> 

    <item name="actionBarTabBarStyle">@style/customActionBarTabBarStyle</item> 
    <item name="android:actionBarTabBarStyle">@style/customActionBarTabBarStyle</item> 

    <item name="actionBarTabTextStyle">@style/customActionBarTabTextStyle</item> 
    <item name="android:actionBarTabTextStyle">@style/customActionBarTabTextStyle</item> 
</style> 

<style name="customActionBarTabStyle" parent="style/Widget.Sherlock.Light.ActionBar.TabView"> 
    <item name="android:background">@color/red</item> 

    <item name="android:textSize">12dp</item> 

</style> 

<style name="customActionBarTabBarStyle" parent="style/Widget.Sherlock.Light.ActionBar.TabBar"> 
    <item name="android:background">@color/red</item> 
</style> 

<style name="customActionBarTabTextStyle" parent="style/Widget.Sherlock.Light.ActionBar.TabText"> 
    <item name="android:titleTextStyle">@style/Theme.Styled.ActionBar.TitleTextStyle</item> 
    <item name="android:textStyle">bold</item> 
</style> 

<style name="Widget.Theme.Styled.ActionBar" parent="Widget.Sherlock.ActionBar"> 
    <item name="android:background">#A9E2F3</item> 
    <item name="background">#A9E2F3</item> 
    <item name="android:titleTextStyle">@style/Theme.Styled.ActionBar.TitleTextStyle</item> 
</style> 

<style name="Theme.Styled.ActionBar.TitleTextStyle" parent="android:style/TextAppearance.Holo.Widget.ActionBar.Title"> 
    <item name="android:textColor">@color/red</item> 
    <item name="android:textStyle">bold</item> 
</style> 

<style name="Animations" /> 

Antwort

3

können Sie die verfügbaren style generator, verwenden oder etwas mehr Einsicht aus this oder this damit verbundene Frage kommen.

+1

Hier habe ich einige Dinge zum Styling Sherlock Aktion erklärt http://krishnalastha.wordpress.com/2012/12/21/styling-sherlock-actionbar-change-actionbar-color/ –

17

Ich bin mir nicht sicher, ob Sie dies nicht mehr benötigen, aber ich werde die Antwort für andere Leute zu sehen, schreiben. Sie können dies im Hintergrund Drawable des customActionBarTabStyle als Drawable Ressource:

<!-- This is the "@drawable/actionbar_tabs_selector" layout !--> 

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/actionbar_tab_style_nselected"/> 
    <item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/actionbar_tab_style_selected"/> 

    <!-- Pressed state --> 
    <item android:state_pressed="true" android:drawable="@drawable/actionbar_tab_style_selected" /> 

    <!-- Focused state --> 
    <item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/actionbar_tab_style_nselected"/> 
    <item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/actionbar_tab_style_nselected"/> 

</selector> 

So sind die hier Ressourcen sind 2 Layer-Listen:

<style name="customActionBarTabStyle" parent="style/Widget.Sherlock.Light.ActionBar.TabView"> 
    <item name="android:background">@drawable/actionbar_tabs_selector</item> 
    <item name="android:textSize">12dp</item> 
</style> 

Die Ressource ein Selector, etwas unter diesen Zeilen sein sollte . Eine für wenn die Registerkarte inaktiv ist und eine für wenn die Registerkarte ausgewählt ist und aktiv. Sie legen also je nach ausgewähltem Status 2 Layer-Listen fest.

Eine einzelne Ebenenliste kann wie folgt aussehen:

<!-- This is the "@drawable/actionbar_tab_style_nselected" layout !--> 

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 

    <!-- Bottom Line --> 
    <item> 
     <shape android:shape="rectangle"> 
      <solid android:color="@color/HCL_orange" /> 
     </shape> 
    </item> 

    <!-- Tab color --> 
    <item android:bottom="2dip"> 
     <shape android:shape="rectangle"> 
      <solid android:color="@android:color/white" /> 
     </shape> 
    </item> 
</layer-list> 

Damit ist der erste Artikel ist in der unteren Zeile, die Sie als Unterstreichungsfarbe des aktuell ausgewählten Tab definieren könnte, und das zweite Element ist die Farbe des die ganze Registerkarte.

+0

Schöne Antwort. :) –

+2

Danke. Nun, ich kämpfe auch mit dem Styling und Theming des Android wegen der schlechten Dokumentation. Und das ist wirklich schade ... – Tooroop

+0

genau das, was ich gesucht habe - danke! – martyglaubitz

Verwandte Themen