您无法将自定义标题与其他标题功能组合使用

时间:2013-03-02 06:06:30

标签: android android-actionbar actionbarsherlock

在我的应用程序中,我正在使用ActionBarSherlock库。我也在使用自定义标题栏。 这是我的onCreate:

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main_tab);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title);

在我的styles.mxl

<style name="MyTheme" parent="Theme.Sherlock">
        <item name="android:background">#ff888888</item>
        <item name="android:windowNoTitle">false</item>
        <item name="android:windowTitleSize">50dp</item>
        <item name="android:windowTitleBackgroundStyle">@style/windowTitleBackgroundStyle</item>
    </style>
<style name="windowTitleBackgroundStyle">  
  <item name="android:background">#00688B</item>                
</style>

在Manifest文件中,我使用MyTheme进行活动。

android:theme="@style/MyTheme"

此代码适用于较低的Android版本(我已使用GB2.3.5进行了测试)。但是当我用ICS进行测试时,它崩溃了以下错误: “你不能将自定义标题与其他标题功能结合起来” 我在StackOVerflow讨论中进行了彻底的讨论,但无法解决问题。 解决方案: 1)错误 2)没有值-v11文件夹

2 个答案:

答案 0 :(得分:10)

我收到了同样的例外。

以下是我发现的内容:在较新版本的Android中,只要选择了Holo主题,框架就会使用Window.FEATURE_ACTION_BAR功能。只要应用程序调用setFeatureInt(Window.FEATURE_CUSTOM_TITLE)并且已设置FEATURE_ACTION_BAR,框架就会抛出异常。

在我的例子中,values-v11文件夹中的styles.xml文件重新定义了我的主题以继承自android:Theme.Holo。当我试图在Android 3.0或更高版本上运行我的应用程序时 - 它崩溃了,因为Holo默认使用ActionBar。修复很简单。使用Holo时关闭ActionBar。以下是修订后的值-v11 \ styles.xml更改:

<style name="AppBaseTheme" parent="android:Theme.Holo.NoActionBar">
    <!-- API 11 theme customizations can go here. -->
</style>

答案 1 :(得分:2)

我有同样的问题并解决了它:

根本原因: 在Manifest中,我将这个标签错误地从我的启动画面粘贴到我的活动中:@android:style / Theme.NoTitleBar 当我在我的活动上请求FEATURE_CUSTOM_TITLE时,发生致命异常,导致冲突。

解: 要修复它,我检查了以下三件事: 1)OnCreate方法:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
        setContentView(R.layout.activity_login);
        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_titlebar);

    }

2)在您的manifest.xml中: 如果您有一条线,请确保这些线路仅在闪屏中出现: 机器人:主题=“@安卓风格/ Theme.NoTitleBar 如果您想要自定义栏,请从任何其他活动中删除该行。

在应用程序标记中,我唯一的主题标记是这一个: 机器人:主题= “@风格/ AppTheme”

在活动代码中,我没有主题标记。

3)转到活动的XML布局,并在GRAPHIC LAYOUT模式下查看。 Maye确定你的主题是AppTheme(你把它放在清单上) 我说“没有标题”,所以这引起了问题。