【问题标题】:You cannot combine custom title with other title features您不能将自定义标题与其他标题功能结合使用
【发布时间】:2015-04-07 16:47:22
【问题描述】:

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

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

在我的 style.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)没有values-v11文件夹

【问题讨论】:

  • 嗨 Waqas,我已经检查了上面的链接,但无法得到任何解决方案。我需要一个带有两个图标和一个标题文本的自定义标题。也正如问题中提到的,我正在使用 actionbarsherlock。
  • 就我而言,我收到此错误是因为我在清单中为 LAUNCHER 活动指定了 android:theme="@style/Theme.Transparent"。我删除了那条线,它起作用了。

标签: android android-actionbar actionbarsherlock


【解决方案1】:

我收到了同样的异常。

这是我发现的:在较新版本的 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。这是修改后的 values-v11\styles.xml 更改:

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

【讨论】:

  • 感谢@craigrf 最好将 false 添加到样式中,而不是使用 .NoActionBar,因为后者包含 true
【解决方案2】:

我遇到了同样的问题并解决了:

根本原因: 在清单中,我错误地将这个标签从启动屏幕复制到我的活动中:@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 中: 如果您有这样的行,请确保仅在启动屏幕中出现这样的行: android:theme="@android:style/Theme.NoTitleBar 如果您想要自定义栏,请从任何其他活动中删除该行。

在应用程序标签中,我唯一的主题标签是这个: android:theme="@style/AppTheme"

在活动标签中,我没有主题标签。

3) 转到 Activity 的 XML 布局,并在 GRAPHIC LAYOUT 模式下查看它。 Maye 确定你的 Theme 说 AppTheme (它是你放在清单上的那个) 我的说“没有标题”,所以这是造成问题的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多