如何在加载应用程序时隐藏标题栏并在加载完成后显示它?

时间:2011-11-27 17:44:13

标签: android user-interface attributes titlebar

我有一个使用自定义标题栏的应用程序。但是,当我的应用程序启动时,我注意到默认标题栏会显示一段时间。我的问题是我不希望在我的应用程序加载时显示默认标题栏。如何在我的应用程序加载时隐藏标题栏,以便不会有任何提示,然后再显示它?

到目前为止,我尝试了以下解决方案,但没有一个有效:

  • 隐藏XML中的标题栏,然后在代码中设置自定义标题栏。 (遇到问题:我收到一条错误消息,说:“您无法将自定义标题与其他标题功能结合使用”。)

在XML中:

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

在onCreate方法中:

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
//... some code goes here
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_header);
  • 将XML中标题栏的大小设置为0.然后稍后通过代码更改其大小。 (遇到的问题:我不知道如何在代码中设置标题栏的大小。是否可能?我尝试了getWindow()。setAttributes()和getWindow()。setLayout()但它们都没有用。 )“

在XML中:

<item name="android:windowTitleSize">30dp</item>
  • 修改windowTitleBackgroundStyle并将透明drawable设置为背景。 (遇到问题:标题栏的内容变得不可见,但标题栏下方的一行仍然可见。)

在XML中:

<!-- style used by windowTitleBackgroundStyle -->
<item name="android:background">@drawable/transparent</item>

3 个答案:

答案 0 :(得分:4)

对您遇到的问题进行了一些解释,希望它们可以帮助您找到您满意的方向。

您已经看到您的主题用于生成活动加载期间看到的内容。发生的事情是系统根据您的进程仍在启动时清单中指定的活动主题生成临时/加载窗口。您的代码甚至可能尚未运行,您自己的活动将有不同的窗口。这很重要,因为一旦窗口的装饰被创建,许多设置就会被锁定,但实际上你有两次机会。当您看到此加载状态时,尚未创建活动使用的窗口。

在主题中设置无标题无效,因为它映射到窗口要素Window.FEATURE_NO_TITLE。这比您可能要求的任何其他标题窗口功能占据主导地位,一旦请求功能,您无法取消请求或删除它,无论装饰是否已初始化。

作为主题的一部分,标题大小可以为您提供可预测的问题。主题属性无法更改。但是,在您的窗口装饰初始化之前,您的活动使用的主题可以更改。您可以在清单中为要在加载期间使用的活动指定一个主题,并使用活动上的setTheme将其换出。 (最佳位置可能是在setContentView之前的onCreate中,否则您将请求窗口功能。)

有可能是你看到的标题栏下面的一行android:windowContentOverlay - 用于从内容上的标题栏提供投影的drawable。在大多数设备上,此阴影的上边缘可能显示为标题栏区域下方的一条线。如果需要,您可以将其设置为@null以完全消除阴影。

答案 1 :(得分:2)

我所做的是在我的清单中的'application'标签中设置以下内容。

android:theme="@android:style/Theme.NoTitleBar" 

然后,对于每个活动,我添加了

android:theme="@style/CustomTheme"

答案 2 :(得分:0)

你可以尝试在全屏模式下打开应用程序..然后在加载应用程序时你可以全屏退出。这样你的标题栏在全屏模式下将不可见。这适用于html。不确定你是否可以使用这个技巧。