设置Window.FEATURE_CUSTOM_TITLE会创建AndroidRuntimeException

时间:2012-12-10 16:49:06

标签: android

我似乎无法克服这个错误:

  

android.util.AndroidRuntimeException:您无法组合自定义标题   与其他标题功能

我正在运行API> 14。

清单如下:

    <activity
        android:name=".activity.ActivityWelcome"
        android:label="@string/app_label_name"
        android:launchMode="singleTask"
        android:clearTaskOnLaunch="true"
        android:theme="@style/My.Theme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

我的活动正在执行以下操作:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
    setContentView(R.layout.welcome);
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.window_title_main);
    ...

R.layout.window_title_main的位置:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_title"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:paddingLeft="5dp" >

    <TextView
        android:id="@+id/textview_title"
        android:drawableLeft="@null"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="-1"/>

</LinearLayout>

为什么当它似乎适用于其他人时,这不起作用?

3 个答案:

答案 0 :(得分:6)

这种错误会让你精神错乱。

所以我碰巧使用Theme.Holo作为我的父主题。 (我自己的主题延伸的主题)

文档说:

  

...操作栏包含在使用Theme.Holo的所有活动中   主题(或其后代之一),这是默认主题时   targetSdkVersion或minSdkVersion属性设置为“11”   或更高。

     

http://developer.android.com/guide/topics/ui/actionbar.html#Adding(第一段)

好的,所以当我尝试完成上面的过程(我的问题)时,我收到错误:

  

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

嗯,这是因为,默认情况下,操作栏已经设置,并且它也不允许您使用自定义标题栏。

文档显示“每个活动都包含操作栏”:

  

这样,当应用程序在Android 3.0或更高版本上运行时,   系统将全息主题应用于每个活动,因此,每个活动   活动包括行动栏。

所以,我现在将时间集中在改变动作栏而不是标题栏上!

答案 1 :(得分:2)

FEATURE_CUSTOM_TITLE

<item name="android:windowNoTitle">true</item>

互相排斥。删除

<item name="android:windowNoTitle">true</item>

它会再次运作。

答案 2 :(得分:0)

作为初学者,大多数答案对我的案例没有帮助。所以这是我的答案。

转到android项目中的res / values文件夹并检查strings.xml(此文件可能因您的情况而异,类似于themes.xml)

在资源标记下的文件内部,检查是否有样式标记。如果您没有找到它,请将下面的代码作为子项添加到资源标记

如下所示

<resources>
    <style name="SomeNameHere">
        <item name="android:windowNoTitle">true</item>
    </style>
</resources>

如果您已经有样式标记,只需将下面的代码添加到样式标记

即可
    <item name="android:windowNoTitle">true</item>