2013-01-02 123 views
5

我想定製我的sherlock操作欄,但沒有任何代碼在我的style.xml中被識別。造型ActionBar Sherlock

在我的清單文件:

android:theme="@style/Theme.Sherlock" 

我style.xml:

<resources> 
<style name="Theme.MyAppTheme" parent="Theme.Sherlock"> 
    <item name="android:actionBarStyle">@style/Theme.MyAppTheme.ActionBar</item> 
</style> 

<style name="Theme.MyAppTheme.ActionBar" parent="Widget.Sherlock.ActionBar"> 
    <item name="android:background">#222222</item> 
    <item name="android:height">64dip</item> 
    <item name="android:titleTextStyle">@style/Theme.MyAppTheme.ActionBar.TitleTextStyle</item> 
</style> 

<style name="Theme.MyAppTheme.ActionBar.TitleTextStyle" parent="TextAppearance.Sherlock.Widget.ActionBar.Title"> 
    <item name="android:textColor">#fff</item> 
    <item name="android:textStyle">bold</item> 
    <item name="android:textSize">32sp</item> 
</style> 

我打電話我動作條是這樣的:

public class MainActivity extends SherlockActivity { 

com.actionbarsherlock.app.ActionBar actionbar; 

... 

actionbar = getSupportActionBar(); 

... } 

有在展示交流時沒有問題但是同樣沒有顯示在style.xml中編碼的任何定製,有人可以幫助我嗎?感恩。

+0

我做類似的東西在這裏! http://stackoverflow.com/questions/19623805/actionbarsherlock-stacked-action-bar-styling-issue – toobsco42

回答

8

這是因爲您在清單文件android:theme="@style/Theme.Sherlock"不作任何區別採用相同的原始風貌。您已準備好名稱爲Theme.MyAppTheme的自定義樣式,其父級爲Theme.Sherlock。因此,您需要在清單文件android:theme="@style/Theme.MyAppTheme"中聲明自定義樣式(Theme.MyAppTheme)。即使你必須包含沒有android的前綴屬性,就像下面的其他回答者所說的那樣。希望這可以幫助。即使你也可以參考this

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

    <style name="Theme.MyAppTheme.ActionBar" parent="Widget.Sherlock.ActionBar"> 
    <item name="android:background">#222222</item> 
    <item name = "background">#222222</item> 
    <item name="android:height">64dip</item> 
    <item name="height">64dip</item> 

    <item name="android:titleTextStyle">@style/Theme.MyAppTheme.ActionBar.TitleTextStyle</item> 
<item name="titleTextStyle">@style/Theme.MyAppTheme.ActionBar.TitleTextStyle</item> 
</style> 

<style name="Theme.MyAppTheme.ActionBar.TitleTextStyle" parent="TextAppearance.Sherlock.Widget.ActionBar.Title"> 
     <item name="android:textColor">#fff</item> 
     <item name="textColor">#fff</item> 
     <item name="android:textStyle">bold</item> 
     <item name="textStyle">bold</item> 
     <item name="android:textSize">32sp</item> 
     <item name="textSize">32sp</item> 
</style> 
+0

這解決了我的noob錯誤,謝謝! –

+0

不客氣。 – Kanth

+0

@Appu它有辦法使用這個應用程序與最小sdk版本8? – pepela

0

此:

<item name="android:actionBarStyle">@style/Theme.MyAppTheme.ActionBar</item> 

是默認動作條,注意到 '安卓'。 你要的風格是這樣的:

 <resources> 
    <style name="Theme.MyAppTheme" parent="Theme.Sherlock"> 
     <item name="android:actionBarStyle">@style/Theme.MyAppTheme.ActionBar</item> 
     <item name="actionBarStyle">@style/Theme.MyAppTheme.ActionBar</item> 

    </style> 

    <style name="Theme.MyAppTheme.ActionBar" parent="Widget.Sherlock.ActionBar"> 
     <item name="android:background">#222222</item> 
     <item name="android:height">64dip</item> 
     <item name="background">#222222</item> 
     <item name="height">64dip</item> 
     <item name="android:titleTextStyle">@style/Theme.MyAppTheme.ActionBar.TitleTextStyle</item> 
     <item name="titleTextStyle">@style/Theme.MyAppTheme.ActionBar.TitleTextStyle</item> 
    </style> 

    <style name="Theme.MyAppTheme.ActionBar.TitleTextStyle" parent="TextAppearance.Sherlock.Widget.ActionBar.Title"> 
     <item name="android:textColor">#fff</item> 
     <item name="android:textStyle">bold</item> 
     <item name="android:textSize">32sp</item> 
     <item name="textColor">#fff</item> 
     <item name="textStyle">bold</item> 
     <item name="textSize">32sp</item> 
    </style>