2013-04-28 30 views
2

我目前正在爲2.3 - 4.2以上的設備編寫應用程序,並且出現了一些奇怪的和意想不到的問題。這是工作正常,直到所有設備上顯示,然後我試圖主題。即使只是簡單的風格延長操作欄sherlock主題,似乎沒有任何操作欄顯示。ActionBarDisappearing on Android 4.0+

樣式的設置。

<style name="FrameworkRoot.Theme" parent="Theme.Sherlock.Light.DarkActionBar"> 
    <!-- API 11+ (compatibility) --> 
    <item name="buttonBarStyle">@style/Compat.ButtonBar</item> 
    <item name="buttonBarButtonStyle">@style/Compat.ButtonBarButton</item> 
    <item name="indeterminateProgressStyle">@style/Compat.IndeterminateProgress</item> 
    <!-- API 14+ (compatibility) --> 
    <item name="listPreferredItemPaddingLeft">@dimen/compat_list_preferred_item_padding_left</item> 
    <item name="listPreferredItemPaddingRight">@dimen/compat_list_preferred_item_padding_right</item> 
    <item name="listPreferredItemHeightSmall">@dimen/compat_list_preferred_item_height_small</item> 
</style> 

<style name="Theme.Base" parent="FrameworkRoot.Theme"> 
    <item name="textHeaderMaxLines">@integer/text_header_max_lines</item> 
    <item name="trackAbstractMaxLines">@integer/track_abstract_max_lines</item> 
    <item name="activatableItemBackground">@drawable/activatable_item_background</item> 
</style>  

<!-- Base themes for the app --> 
<style name="Theme.TestApp" parent="Theme.Base"> 
    <item name="actionBarStyle">@style/Widget.TestApp.ActionBar</item> 
    <item name="android:actionBarStyle">@style/Widget.TestApp.ActionBar</item> 
</style> 

<!-- Base Action Bar Style --> 
<style name="Widget.TestApp.ActionBar" parent="Theme.Sherlock.Light.DarkActionBar"> 

</style> 

如果我刪除了:

<item name="android:actionBarStyle">@style/Widget.TestApp.ActionBar</item> 

因此,它不是在3.0+得到風格的動作欄本身,我不能風格吧。

什麼是最好的設置方法? AndroidManifest.xml正在將應用程序的樣式指向「Theme.TestApp」。

我的最終目標是在操作欄上自定義背景,以及自定義選項卡顏色和字體。這是最好的方法,因爲我現在的方法運行不正常。

回答

1

您必須爲ActionBarSherlock 設置本機ActionBar的屬性。有了這個

<style name="Theme.Base" parent="FrameworkRoot.Theme"> 
    <item name="textHeaderMaxLines">@integer/text_header_max_lines</item> 
    <item name="trackAbstractMaxLines">@integer/track_abstract_max_lines</item> 
    <item name="activatableItemBackground">@drawable/activatable_item_background</item> 
</style>  

:因此,例如更換此

<style name="Theme.Base" parent="FrameworkRoot.Theme"> 

    <item name="textHeaderMaxLines">@integer/text_header_max_lines</item> 
    <item name="trackAbstractMaxLines">@integer/track_abstract_max_lines</item> 
    <item name="activatableItemBackground">@drawable/activatable_item_background</item> 

    <item name="android:textHeaderMaxLines">@integer/text_header_max_lines</item> 
    <item name="android:trackAbstractMaxLines">@integer/track_abstract_max_lines</item> 
    <item name="android:activatableItemBackground">@drawable/activatable_item_background</item> 

</style>  

與「機器人」前綴指向內部資源,爲本地的ActionBar沒有「機器人」在前面的屬性,這些屬性指向ActionBarSherlock的資源。