7

我有一个项目,我在其中设置:

  • minSdkversion 设置为 10
  • MainActivity 是一个 TabActivity

onCreate 方法中的代码是这样的:

super.onCreate(savedInstanceState);

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

使用以前的设置,一切正常!但是,如果我将 minSdkVersion 设置为 11 或更高,则会发生此异常:

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

我不明白为什么这只是改变 minSdkVersion。我在这个网站上对这个问题很感兴趣。我尝试设置:

  • Theme.NoTitleBar 在主布局和清单文件之后
  • 我把这 3 行放在所有可能的位置
  • 如果我评论第一行,当我在我的 CustomTitle 布局的 TextView 引用上调用某些内容时会发生 NullPointerException
  • 我尝试在 theme.xml 文件声明中设置 "windowNoTitle" = true

由于我仅使用 API 11 提供的功能,因此我想在将 App 加载到 Store 之前将 minSdk 设置为 11。我能怎么做 ??我需要帮助

编辑:在清单中使用 minSdkVersion = 10 和 Theme.NoTitleBar 时,会发生同样的错误。删除它,一切都像以前一样。当 API 为 11 或更高版本时,任何人都可以提供用于设置自定义标题的工作代码(清单和活动代码)吗?非常感谢

4

7 回答 7

38

由我自己修复。我不知道为什么,只是简单地为每个活动的声明添加清单文件“主题”属性,一切正常:

由此:

<activity
        android:name=".CheckActivity"
        android:configChanges="orientation"
        android:screenOrientation="portrait"
</activity>

对此:

<activity
        android:name=".CheckActivity"
        android:configChanges="orientation"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme" >
</activity>
于 2012-10-30T11:51:13.143 回答
3

@kinghomer我实际上已经在2.2(API 8)上尝试过CUSTOM_TITLE。让我试试 API 11 并回复您!

在此之前,您无需在任何地方制作 Theme.NoTitleBar,可以直接在 .java 文件中进行控制。给我一点时间,会回来的!

于 2012-10-24T10:06:47.260 回答
0

res/values-v11 默认使用这段代码:</p>

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

将“android:Theme.Holo.Light”更改为“@android:style/Theme”就可以了!

提示:如果你的项目没有“res/values-v11”,那么检查你的项目引用的“lib项目”。</p>

于 2014-11-13T08:18:13.007 回答
0

除了接受的答案之外,还有另一种方法可以解决这个问题:

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/CustomTheme" >

在基于 xml 的 mainifest 中分配一个theme属性application,它应该适用于所有活动。

于 2015-05-22T06:15:34.397 回答
0

当您尝试添加自定义标题栏并通过ActionBarActivity或扩展活动时会出现此问题AppcomActivity。这两个活动类已经定义了标题栏。因此,当您尝试添加自己的自定义标题栏时,会出现冲突,使用哪个标题栏 - 您的自定义标题栏或扩展活动提供的标题栏。

要解决此问题,只需扩展您的活动,Activity其中没有任何预定义的标题栏,因此您的活动将被接受而不会发生任何冲突。

public void MyActivy extends Activity
{

    // your code

}
于 2016-01-01T06:01:20.473 回答
0

我刚刚添加android:theme="@android:style/Theme"到文件activityAndroidManifest.xml,它工作得非常好。

<activity
        android:name=".MainActivity"
        android:theme="@android:style/Theme" >
</activity>

希望这也适用于你。

于 2017-07-14T08:24:23.633 回答
0

在您的AndroidManifest文件中,使用此代码段而不是您的代码段。

由此:

android:theme="@style/AppTheme">

对此:

android:theme="@style/custom_title">
于 2018-10-21T06:30:13.480 回答