5

我正在尝试自定义我的 sherlock 操作栏,但我在 style.xml 中编写的代码没有被识别。

在我的清单文件中:

 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 中编码的任何自定义,有人可以帮我吗?谢天谢地。

4

3 回答 3

8

这是因为您在清单文件中应用了相同的原始样式,android:theme="@style/Theme.Sherlock"这没有任何区别。您已经准备了带有名称的自定义样式Theme.MyAppTheme,父级为Theme.Sherlock。因此,您需要在清单文件中声明您的自定义样式(Theme.MyAppTheme),例如android:theme="@style/Theme.MyAppTheme". 正如其他回答者所说,即使您也必须像下面那样包含没有 android 前缀属性的属性。希望这可以帮助。即使你也可以参考这个

 <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>
于 2013-01-02T03:14:31.310 回答
3

使用它,您无需创建自己的样式

操作栏样式生成器

于 2013-01-02T04:10:22.497 回答
0

这:

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

是默认的ActionBar,注意'android:'。你必须像这样设计它:

     <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>
于 2013-01-02T02:12:59.087 回答