Muszę zaimplementować ekran powitalny w mojej aplikacji o strukturze plastra miodu. Używam tego kodu w działaniu onCreate, aby pokazać powitanie:
setContentView(R.layout.splash);
getActionBar().hide();
i ten kod, aby po pewnym czasie pokazać główny interfejs użytkownika:
setContentView(R.layout.main);
getActionBar().show();
Ale zanim zadzwoni onCreate i pojawi się splash, jest mało czasu na wyświetlenie paska akcji.
Jak mogę uczynić pasek akcji niewidocznym?
Próbowałem zastosować motyw do aktywności bez paska akcji:
<item name="android:windowActionBar">false</item>
ale w takim przypadku getActionBar () zawsze zwraca null i nie znalazłem sposobu, aby pokazać go ponownie.
android
android-3.0-honeycomb
android-actionbar
Ilya Izhovkin
źródło
źródło
Theme.AppCompat.Light
... użyj tego Jak odpowiedzieć [1] [1]: stackoverflow.com/a/25365193/1364896Odpowiedzi:
Ustawienie
android:windowActionBar="false"
naprawdę wyłącza pasek ActionBar, ale następnie, jak mówisz,getActionBar();
zwraca null. Rozwiązuje to:Spowoduje to utworzenie ActionBar i natychmiast ukrywa go, zanim miał szansę zostać wyświetlony.
Ale teraz jest inny problem. Po wstawieniu
windowActionBar="false"
motywu działanie rysuje normalny tytuł okna zamiast paska działań.Jeśli spróbujemy tego uniknąć, używając niektórych
*.NoTitleBar
podstawowych motywów lub spróbujemy wprowadzić<item name="android:windowNoTitle">true</item>
własny motyw, nie zadziała.Powodem jest to, że pasek akcji zależy od wyświetlanego tytułu okna - to znaczy pasek akcji jest przekształconym tytułem okna.
Zatem sztuczka, która może nam pomóc, polega na dodaniu jeszcze jednej rzeczy do naszego tematu aktywności xml:
Spowoduje to, że tytuł okna o zerowej wysokości będzie praktycznie niewidoczny.
W twoim przypadku po zakończeniu wyświetlania ekranu powitalnego możesz po prostu zadzwonić
i gotowe. Aktywność rozpocznie się bez migania paska ActionBar ani wyświetlania tytułu okna.
ADDON: Jeśli wielokrotnie wyświetlasz i ukrywasz pasek ActionBar, być może zauważyłeś, że pierwszy pokaz nie jest animowany. Od tego momentu pokazywanie i ukrywanie się jest animowane. Jeśli chcesz mieć animację również przy pierwszym pokazie, możesz użyć tego:
To samo można osiągnąć dzięki:
ale może potrzebować dodatkowej logiki, aby sprawdzić, czy jest to pierwszy pokaz działania.
Chodzi o to, aby nieco opóźnić ukrywanie paska ActionBar. W pewien sposób pozwalamy wyświetlać pasek ActionBar, ale natychmiast go ukrywamy. W ten sposób wykraczamy poza pierwszy nie animowany pokaz, a następny pokaz będzie uważany za drugi, a zatem będzie animowany.
Jak można się domyślić, jest szansa, że ActionBar mogłyby być postrzegane zanim została ukryta przez działanie opóźnione. Tak jest w rzeczywistości. Przez większość czasu nic nie jest widoczne, ale od czasu do czasu widać pasek ActionBar migający na ułamek sekundy.
W każdym razie nie jest to ładne rozwiązanie, dlatego z zadowoleniem przyjmuję wszelkie sugestie.
Dodatek dla użytkownika paska akcji obsługi v7 będzie następujący:
źródło
setTheme
? Ponieważ twoja odpowiedź działa świetnie, jeśli ustawię motyw z manifestu, ale jeśli to zrobięonCreate
(w moim przypadku motyw zależy od preferencji jasnego ciemnego motywu), domyślny pasek działań holo miga przed tym, który ustawiłem w moim motywie tak czy siak. Ale może to jest warte kolejnego kompletnego pytania SO.android:theme="@android:style/Theme.NoTitleBar"
w Manifeście, a następniesetTheme(R.style.MyTheme)
w głównej działalnościonCreate
; To gwarantuje (w Androidzie 4+) uniknięcie flashowania domyślnego holoActionBar
przed tym, który zdefiniowałem w moim motywie (przybyłem tutaj, szukając sposobu na obejście tego; w rzeczywistości nie potrzebuję żadnego ekranu powitalnego).getSupportActionBar().hide();
późniejgetWindow().requestFeature(Window.FEATURE_ACTION_BAR);
i wszystko wysadza w powietrze NPE. Jakieś pomysły? Problem zTheme.AppCompat
?Używanie tego prostego kodu w pliku .class do ukrywania paska akcji
źródło
Jeśli używasz ActionBarSherlock, użyj Theme.Sherlock.NoActionBar Theme w swoim działaniu
źródło
<activity android:theme="@android:style/Theme.NoActionBar">
.Theme.Sherlock.NoActionBar
będzie oznaczać dzwonieniegetActionBar()
lubgetSupportActionBar()
(aby następnie wyświetlić pasek akcji) wartość null ...error: Error: No resource found that matches the given name (at 'theme' with value '@android:style/ Theme.NoActionBar').
Utwórz dwa style:
Ustaw AppThemeNoBar jako motyw aplikacji, a AppThemeBar na działanie, w którym chcesz wyświetlić pasek ActionBar. Używając dwóch stylów, nie zobaczysz paska akcji podczas ładowania widoków.
Sprawdź ten link Android: ukryj pasek akcji podczas wyświetlania obciążenia
źródło
Cześć Mam proste rozwiązanie, używając 2 motywów
Motyw ekranu powitalnego (dodaj go do manifestu):
<style name="SplashTheme" parent="@android:style/Theme.Holo.NoActionBar"> <item name="android:windowBackground">@color/red</item> </style>
normalny motyw (dodaj go do swojej działalności przez setTheme (R.style.Theme)):
<style name="Theme" parent="@style/Theme.Holo"> <item name="android:windowBackground">@color/blue</item> </style>
Aby obsługiwać SDK 10:
źródło
Próbowałem też ukryć pasek akcji w Androidzie 2.2, ale żadne z tych rozwiązań nie działało. Wszystko kończy się katastrofą. Sprawdziłem DDMS LOg. Mówiło mi, żebym używał „Theme.AppCompat”. W końcu rozwiązałem problem, zmieniając
android:theme="@android:style/Theme.Holo.Light.NoActionBar"
wierszdo
android:theme="@style/Theme.AppCompat.NoActionBar"
i to działało, ale interfejs było ciemno.potem próbowałem
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
i w końcu dostałem to, czego chciałem.Potem, kiedy szukałem „AppCompat” na stronie programisty, dostałem to.
Myślę więc, że rozwiązaniem dla Androida 2.2 jest
I przepraszam za mój zły angielski jak zawsze.
źródło
Najlepszy wynik dla mnie to utworzenie działania z ThemeNoTitleBar i bez zawartości jako program uruchamiający. Następnie ta aktywność wywołuje bezpośrednio drugą.
Oczywiście, jeśli chcesz, możesz dodać treść do działania Splash, ale w moim przypadku chciałem tylko pokazać aplikację bezpośrednio.
Oczywisty:
Czynność:
}
źródło
Jeśli używasz
Activity
dołączonego ekranu powitalnego, możesz to zrobić, jeśli używaszSherlockActionBar
Po ekranie powitalnym możesz go ponownie wyświetlić za pomocą ...
Powinno być tak samo z rodzimym
ActionBar
systemem Android.źródło
Rozwiązanie @Clerics działa. Ale wydaje się, że jest to również problem z niektórymi natywnymi aplikacjami Google: Google, sklep z zabawkami, rozmowa. Również inne duże aplikacje, takie jak Skype.
EDYCJA : Poniższe rozwiązanie dało mi problem z blokadą akcji na interfejsie API <4.0, ponieważ ustawiono przyczynę Nie działa przed kanapką z lodami
Dodaj w swoim manifeście tagi aplikacji lub aktywności:
A następnie w głównej działalności:
źródło
najlepszy i prosty
requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
źródło
2015 r., Używając biblioteki obsługi v7 z motywem AppCompat, ustaw ten motyw dla swojej aktywności.
źródło
Bo
Splashscreen
powinieneś użyć tej liniimanifest
i nie używaćgetActionBar()
i raz, gdy Splash
Activity
jest zakończony w głównymActivity
użyciu poniżej lub nicźródło
<item android:name="android:windowActionBar">true</item>
pozbywa się tego błędu, ale nie wiem, czy nadal działa.Wypróbuj to, działa dla mnie:
Poniżej pozbywa się paska tytułu aktywności
Poniżej eliminuje pasek powiadomień, aby aktywność przechodziła na pełny ekran
(Pełny przykład poniżej) Uwaga: metody te zostały wywołane przed ustawieniem widoku zawartości naszej działalności
źródło
może to być przydatne,
dodaj to do swojego manifestu
Twoje zdrowie
źródło
Najlepszy sposób, jaki znajduję po przeczytaniu wszystkich dostępnych opcji, to ustawienie głównego motywu bez ActionBar, a następnie skonfigurowanie MyTheme w kodzie nadrzędnym dla wszystkich działań.
Oczywisty:
BaseActivity:
W ten sposób unikam paska ActionBar podczas uruchamiania aplikacji!
źródło
Rozwiązania, które już opublikowano, zawierały efekt uboczny, że pierwsze wywołanie .show () nie animowało dla mnie paska ActionBar. Mam inne fajne rozwiązanie, które naprawiło:
Utwórz przezroczystą rysownię - coś takiego:
Ustaw rzeczywiste tło paska akcji na niewidoczny widok niestandardowy ustawiony na pasku akcji:
Ustaw przezroczyste tło dla paska akcji w programie onCreate:
Ważne: Nie ukrywaj paska akcji natychmiast w programie onCreate, ale z pewnym opóźnieniem później - np. Po zakończeniu tworzenia układu:
Przed pierwszym wywołaniem .show () ustaw widok niestandardowy widoczny:
źródło
Jeśli masz wartość NULL, ponieważ korzystasz z biblioteki wsparcia , zamiast
getActionBar()
dzwonićgetSupportActionBar()
.źródło
Po prostu dodaj to do MainActivity w funkcji onCreate.
źródło
supportActionBar?.apply { hide() }
Umieść ekran powitalny w osobnym działaniu i użyj metody
startActivityForResult
głównej,onCreate
aby go wyświetlić. Działa to, ponieważ zgodnie z dokumentami:Prawdopodobnie powinieneś to zrobić tylko wtedy, gdy argumentem
onCreate
jestnull
(wskazujący na ponowne uruchomienie twojej działalności, w przeciwieństwie do ponownego uruchomienia z powodu zmiany konfiguracji).źródło
Nadal miałem błąd ze wskaźnikiem zerowym i wreszcie pomogło, gdy najpierw wywołałem metodę getWindow (). RequestFeature (), a następnie super.onCreate ()
źródło
Po prostu dodaj to do swojego styles.xml
źródło
Faktycznie, można po prostu ustawić powitalny
Activity
zNoActionBar
i ustawić głównyactivity
z paska akcji.źródło
Najlepszym sposobem na zrobienie tego jest zrobienie z pierwszego działania jako pustego działania i zawartości, którą chcesz umieścić, a następnie po pewnym czasie uruchomić inną aktywność. Postępując w ten sposób, możesz wykonać pierwszą aktywność jako ekran powitalny bez paska akcji lub czegokolwiek. Oto moja pierwsza aktywność
Następnie możesz umieścić dowolną aktywność jako pierwszą aktywność. Jeśli nie chcesz mieć paska akcji na żadnym ekranie, po prostu dodaj go do swoich stylów
źródło
Android studio zapewnia szablon kompilacji dla pełnego ekranu, jeśli używasz Android studio, możesz wykonać poniższy krok, aby zaimplementować aktywność na pełnym ekranie.
Gotowe. Android studio wykonało swoją pracę, teraz możesz sprawdzić kod na pełnym ekranie.
źródło
to jest najlepszy sposób, w jaki użyłem Idź do pliku Java, po
onCreate
:źródło
Zdaję sobie sprawę, że publikowanie linków nie jest najlepszym sposobem na robienie różnych rzeczy, ale gorąco polecam przeczytanie poniższej dokumentacji od Google. Jest to oficjalny dokument systemu Android dotyczący sposobu kontrolowania interfejsu użytkownika systemu (takich jak pasek akcji, pasek nawigacji itp.). Niestety informacji jest zbyt wiele, aby publikować bezpośrednio, ale po przeczytaniu tego zrozumiesz dokładnie, jak wyświetlać i ukrywać funkcje bez względu na wersję, którą tworzysz, jest to takie proste!
Uwzględniaj, że link się zmienia, można go znaleźć w oficjalnej dokumentacji Androida podczas szkolenia -> pierwsze kroki -> Najlepsze praktyki dotyczące interfejsu użytkownika -> zarządzanie interfejsem systemu
https://developer.android.com/training/system-ui/index.html
źródło
możesz użyć tego:
getSupportActionBar().hide();
jeśli to nie działa, spróbuj tego:jeśli powyższe nie działa, spróbuj tego:
w twoim katalogu = res / wartości / style.xml, otwórz style.xml -> następuje
parent
zmiana atrybutu naparent="Theme.AppCompat.Light.DarkActionBar"
jeśli to wszystko też nie działa. już nie wiem. ale dla mnie to działa.
źródło