自定义标题栏导致较新版本的Android操作系统上出现异常

时间:2013-04-09 22:12:42

标签: android android-layout

我需要帮助。我已到达那个我尝试了很多东西的地方:

A)有学习障碍。 B)我做了一些根本错误的事情。

我有一个应用程序,主要活动没有标题栏和一堆其他活动与自定义标题栏。在Android 2.3.3上,一切正常。在最新版本的Android(4.2)上,我得到了这个:

cannot combine custom titles with other title features

我正在添加我的自定义标题栏:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

    setContentView(R.layout.activity_about_us);

    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.window_title);

    TextView title = (TextView) findViewById(R.id.title);
    title.setText(R.string.title_activity_about_us);
    title.setGravity(Gravity.CENTER);
    title.setTypeface(Typeface.SANS_SERIF, Typeface.BOLD);
}

我正在禁用主屏幕上的标题栏,如下所示:

<style name="MainTableTheme" parent="AppBaseTheme">
    <item name="android:windowNoTitle">true</item>
</style>

我调查了ActionBarSherlock,但这看起来似乎很简单。我还尝试了基于阅读20多个stackoverflow帖子的“隐藏”栏的各种方法。底线是它似乎只是平坦不喜欢设置自定义标题栏。

我想要做的就是有一个没有TITLE BAR的主要活动和一些其他活动WITH TITLE BAR,有一些简单的东西设置,如背景颜色和文字。我该怎么做才能在2.3.3及以上版本上运行?我很好地掌握了我所拥有的一切 - 我只需要一些有用的东西。

帮助......我.....

2 个答案:

答案 0 :(得分:0)

<item name="android:windowNoTitle">true</item>更改为<item name="android:windowNoTitle">false</item>(因为您需要标题栏)并确保AppBaseTheme继承.NoActionBar - 风格Holo主题(例如, Theme.Holo.NoActionBar),至少在API Level 11+上。因此,例如,使用您的onCreate()和此主题,它可以运作:

<style name="MainTableTheme" parent="android:Theme.Holo.NoActionBar">
    <item name="android:windowNoTitle">false</item>
</style>

答案 1 :(得分:0)

我永远无法弄清楚主要问题所以我最终创建了一个自定义布局,然后将其包含在每个主要布局中。

自定义布局(window_title.xml):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linear_layout"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="35dip"
    android:gravity="center_horizontal"
    android:paddingLeft="5dip"
    android:background="#fab41e"
    android:layout_alignParentTop="true">

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="22sp"
        android:paddingRight="5dip"
        android:typeface="sans"
        android:textStyle="bold"
        style="@style/OverlayText"/>
</LinearLayout>

我如何将其包含在每个Activity布局中,而无需复制XML:

<include  layout="@layout/window_title" />

这解决了整个运行时异常问题,我可以根据需要在每个Activity中对其进行修改。