5

I'm trying to customize my sherlock action bar, but nothing that I code in my style.xml is recognized.

In my manifest file:

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

My 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>

I'm calling my actionbar this way:

public class MainActivity extends SherlockActivity {

 com.actionbarsherlock.app.ActionBar actionbar;

 ...

 actionbar = getSupportActionBar();

 ... }

There is no problem in showing the actionbar, but the same does not show any customization coded in style.xml, can someone help me? Thankful.

Artur Couto
  • 498
  • 1
  • 6
  • 19
  • I am doing something similar HERE !!! http://stackoverflow.com/questions/19623805/actionbarsherlock-stacked-action-bar-styling-issue – Etienne Lawlor Oct 27 '13 at 21:36

3 Answers3

8

It's because you are applying the same original style in the manifest file android:theme="@style/Theme.Sherlock" which doesn't make any difference. You have prepared the custom style with name Theme.MyAppTheme, having parent as Theme.Sherlock. So, you need to declare your customized style(Theme.MyAppTheme) in your manifest file like android:theme="@style/Theme.MyAppTheme". Even you have to include without android prefix attributes too like below as the other answerer also said. Hope this helps. Even you can refer this too.

 <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>
Community
  • 1
  • 1
Kanth
  • 6,681
  • 3
  • 29
  • 41
  • @Appu it there way to use this for applications with min sdk version 8? – pepela Jun 20 '13 at 08:44
  • @pepela It obviously runs on version 8. It works on Android 2.x and up. You can check [here](https://github.com/JakeWharton/ActionBarSherlock/blob/master/actionbarsherlock/AndroidManifest.xml) for confirmation i.e, minSdkVersion is 7, so it runs even on 7 too. Hope your doubt is cleared. – Kanth Jun 20 '13 at 09:02
  • @Appu it writes this error `android:actionBarStyle requires API level 11 (current min is 8)` – pepela Jun 20 '13 at 09:06
  • @pepela Then you didn't include actionBarSherlock library in your project, did you? Because if it shows that error, it gives warning about the original actionbar which is provided in API level 11. – Kanth Jun 20 '13 at 09:10
3

Use this and you don't need to create your own style

Action Bar Style Generator

Zyoo
  • 773
  • 10
  • 30
0

This:

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

is for the default ActionBar, notice the 'android:'. You have to style it like this:

     <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>
Ahmad
  • 69,608
  • 17
  • 111
  • 137