我为我的应用程序制作了自定义标题栏。但是,当应用程序首次加载时,应用程序名称会在文本显示之前显示在标题栏中一会儿。我该如何阻止这种情况发生?
我在我的主要活动中设置自定义标题栏:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.mytitle);
mytitle.xml是我设置文本的地方:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myTitle"
android:text="my text"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:textAppearance="?android:attr/textAppearance"
/>
我的标题栏背景不闪烁,只是文字。
感谢。
答案 0 :(得分:11)
基本说明:在启动应用程序时,为了尽快响应用户,Android首先会显示应用程序的“预览”窗口,然后才开始启动其进程。它通过获取应用程序的AndroidManifest.xml
中提供的信息并创建一个看起来像它的空活动的窗口来实现这一点。因此,您应该将清单中的主题设置为尽可能匹配实际UI的内容。
对于自定义标题的情况,您无能为力,因为标题的外观取决于您的代码实际执行的操作,并且您的代码尚未运行。您可以做的最好的事情是使用android:theme="@android:style/Theme.NoTitleBar"
,这样预览窗口根本不会尝试显示任何标题栏...当然,在您的活动中,您需要通过调用{{1}来清除它返回默认主题。
详细说明需要放置setTheme(android.R.style.Theme)
的位置:
AndroidManifest.xml
答案 1 :(得分:1)
另一种解决方案是设置标签:
android:label=""
在清单文件中的所有活动中。
答案 2 :(得分:0)
好吧,在设置主要内容之前,您可以先尝试设置标题栏。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.mytitle);
setContentView(R.layout.main);