我有一个使用自定义标题栏的应用程序。但是,当我的应用程序启动时,我注意到默认标题栏会显示一段时间。我的问题是我不希望在我的应用程序加载时显示默认标题栏。如何在我的应用程序加载时隐藏标题栏,以便不会有任何提示,然后再显示它?
到目前为止,我尝试了以下解决方案,但没有一个有效:
在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中:
<item name="android:windowTitleSize">30dp</item>
在XML中:
<!-- style used by windowTitleBackgroundStyle -->
<item name="android:background">@drawable/transparent</item>
答案 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。不确定你是否可以使用这个技巧。