gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 12:40:44 30 4
gpt4 key购买 nike

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

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

  • 在 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 并设置一个透明的可绘制对象作为背景。 (遇到的问题:标题栏的内容变得不可见,但标题栏下方的一行仍然可见。)

在 XML 中:

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

最佳答案

对您遇到的问题进行一些解释,希望它们能帮助您朝着满意的方向前进。

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

在您的主题中设置无标题是行不通的,因为它映射到窗口功能 Window.FEATURE_NO_TITLE。这比您可能请求的任何其他标题窗口功能都重要,并且一旦请求了某个功能,无论装饰是否已初始化,您都不能取消请求或删除它。

作为主题的一部分,标题大小会给您带来可预见的问题。主题属性无法更改。但是,您的 Activity 使用的主题可以在您的窗口装饰初始化之前更改。您可以在 list 中为将在加载期间使用的 Activity 指定一个主题,并在您的 Activity 中使用 setTheme 将其换出。 (最好的位置可能是在 setContentView 之前的 onCreate 中,否则您会在此处请求窗口功能。)

您看到的标题栏下方的行很可能是 android:windowContentOverlay - 用于在内容上提供来自标题栏的投影的可绘制对象。在大多数设备上,此阴影的顶部边缘可能会显示为标题栏区域下方的一条线。如果需要,您可以将其设置为 @null 以完全摆脱阴影。

关于android - 如何在应用程序加载时隐藏标题栏并在加载完成时显示它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8287584/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com