【问题标题】:Android custom theme on 2.3, holo theme on 4.02.3 上的 Android 自定义主题,4.0 上的全息主题
【发布时间】:2012-02-05 09:39:44
【问题描述】:

我阅读了http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html,但有一些问题。对于 pre-honeycomb 我想要一个自定义标题,对于 post-honeycomb 我想要默认标题。当我尝试在 ICS 上运行我的应用程序时

android.util.AndroidRuntimeException: You cannot combine custom titles with other title features

如果我删除自定义标题,它在所有版本上都可以正常工作,只是没有自定义标题。

在 values-v11 我有包含以下内容的主题.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="customTheme" parent="android:Theme.Holo.Light">
    </style>
</resources>

所以我的主题文档说基本上不使用自定义主题。

如果我删除

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);

然后主题在 ICS 上正确显示。

我无法想象我必须在编码级别检查我运行的 API 级别以及是否请求窗口功能,这应该由系统处理。

谢谢,A。

【问题讨论】:

  • 你能澄清一下吗?如果您仍然要使用默认标题,为什么还要在 ics 上请求自定义标题?
  • 我根本不想要 ICS 上的自定义标题。我从给定的链接中了解到我需要 ICS 的主题.xml。 requestWindowFeature... 编码我只需要 2.3 及以下版本。

标签: android themes android-theme


【解决方案1】:

非常类似于this 问题。我猜操作栏被认为是标题功能,因此将其关闭可以消除异常。

不过,我仍然对这个问题感到有些困惑。你说你想要 post-honeycomb 的默认标题,但你不能使用自定义标题,也不能使用默认操作栏。如果你真的想做你所要求的( = 3.0的默认操作栏),那么你需要在调用window.requestFeature等之前检查Build.VERSION.SDK_INT。这就是它的完成方式actionBarCompat 的例子就是做这种事情。

【讨论】:

  • 好吧,我不想相信我真的必须检查我希望我没有的 API 级别。我会那样做。感谢您的确认和挖掘 actionBarCompat 示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多