2010-07-23 13 views
9

Zrobiłem niestandardowy pasek tytułu dla mojej aplikacji, która działa. Jednak po załadowaniu aplikacji nazwa aplikacji jest wyświetlana na pasku tytułu przez chwilę, zanim pojawi się mój tekst. Jak mogę temu zapobiec?Zatrzymanie nazwy aplikacji z miganiem w pasku tytułu

mogę ustawić niestandardowy pasek tytułowy w moim głównym aktywności tutaj:

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 gdzie mogę ustawić tekst:

<?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" 
    /> 

Mój pasek tytułowy tło nie miga, tylko tekst.

Dzięki.

Odpowiedz

11

Podstawowe wyjaśnienie: podczas uruchamiania aplikacji, aby jak najszybciej odpowiedzieć na użytkownika, Android pierwszy pokazuje się okno „Podgląd” app, zanim jeszcze zacznie wychowywanie swojego procesu. Robi to, pobierając informacje dostępne w aplikacji AndroidManifest.xml i tworząc okno, które wygląda jak pusta aktywność, aby się pojawiło. W związku z tym powinieneś ustawić motyw w manifeście na coś, co pasuje tak ściśle, jak to tylko możliwe, jak wygląda twój rzeczywisty interfejs użytkownika.

W przypadku niestandardowego tytułu niewiele można zrobić, ponieważ tytuł będzie wyglądał w zależności od tego, co faktycznie robi kod, a żaden z kodów nie jest jeszcze uruchomiony. Najlepsze, co prawdopodobnie możesz zrobić, to użyć android:theme="@android:style/Theme.NoTitleBar", aby okno podglądu nie próbowało w ogóle wyświetlać żadnego paska tytułu ... Oczywiście w swojej działalności musisz to wyczyścić, dzwoniąc pod numer setTheme(android.R.style.Theme), aby powrócić do domyślnego motywu .

Aby opracować tylko trochę o tym, gdzie w AndroidManifest.xml to musi być umieszczone:

<application 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.NoTitleBar" > 
+0

OK umieszczam android: theme = "@ android: style/Theme.NoTitleBar" w manifeście pod moją główną aktywnością, ale teraz ulega awarii, gdy dojdę do tego wiersza w mojej aktywności: requestWindowFeature (Window.FEATURE_CUSTOM_TITLE); – Dominic

+0

Musisz wywołać setTheme() przed czymkolwiek innym, aby przełączyć się na motyw, który ma pasek tytułu. Na przykład setTheme (android.R.style.Theme). – hackbod

+0

To się udało! Dzięki. – Dominic

0

Cóż, możesz spróbować najpierw ustawić pasek tytułu, zanim ustawisz zawartość główną.

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); 
+0

Próbowałem, ale to nie zadziałało. – Dominic

1

Innym rozwiązaniem mogłoby być ustawiony tagu:

android:label=""

We wszystkich działaniach w manifeście plik.

Powiązane problemy