Mogę ukryć pasek akcji w plastrze miodu za pomocą tego kodu:
getActionBar().hide();
Ale kiedy klawiatura otwiera się, a użytkownik kopiuje i wkleja cokolwiek, pasek akcji pojawia się ponownie. Jak mogę trwale wyłączyć pasek akcji?
Mogę ukryć pasek akcji w plastrze miodu za pomocą tego kodu:
getActionBar().hide();
Ale kiedy klawiatura otwiera się, a użytkownik kopiuje i wkleja cokolwiek, pasek akcji pojawia się ponownie. Jak mogę trwale wyłączyć pasek akcji?
Odpowiedzi:
Jeśli używasz Theme.Holo.Light
i chcesz używać tego Theme.Holo.Light.NoActionBar
wariantu na urządzeniach w wersji starszej niż 3.2, możesz dodać to do styles.xml
:
<style name="NoActionBar" parent="@android:style/Theme.Holo.Light">
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
a następnie ustaw go jako motyw działania:
<activity android:theme="@style/NoActionBar" ... />
<item name="android:windowFullscreen">true</item>
Ustawiając motyw aktywności w Manifest,
<activity
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
....
>
ActionBar
, dla mnie.
Używam następującego kodu wewnątrz mojej funkcji onCreate:
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
Źródło: https://developer.android.com/guide/topics/ui/actionbar.html
Z domyślną generowaną nadklasą Aktywności w Android Studio ActionBarActivity
, żadne rozwiązanie w innych odpowiedziach nie działa. Aby rozwiązać, po prostu zmień nadklasę:
public class xxxActivity extends ActionBarActivity{
do:
public class xxxActivity extends Activity {
Jeśli chcesz uzyskać pełny ekran bez actionBar i Title.
Dodaj go w style.xml
<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
</style>
i użyj stylu z manifest.xml.
android:theme="@style/AppTheme.NoActionBar"
Najlepszym sposobem, który znalazłem, który daje niestandardowe motywy i nie ma paska akcji, jest utworzenie SuperClass dla wszystkich działań w moim projekcie i wywołanie w nim onCreate () następującego wiersza kodu -
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
To zawsze działa na mnie. Jedynym problemem w tym podejściu jest to, że podczas uruchamiania aplikacji zobaczysz pasek akcji przez ułamek sekundy (nie aktywność, cała aplikacja).
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
getSupportActionBar().hide();
}
Możesz wymusić ukrycie paska akcji po prostu:
ActionBar actionbar = getSupportActionBar();
actionBar.hide();
Po prostu użyj domyślnego motywu.
Jeśli potrzebujesz tylko motywu bez paska akcji, możesz użyć wariantu „NoActionBar”, na przykład. jeśli twój motyw podstawowy jest taki jak poniżej
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
wtedy możesz użyć
<style name="AppThemeNoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
Ale jeśli chcesz zachować właściwości swojego głównego motywu, czyli AppTheme, możesz zrobić jak poniżej
<style name="AppThemeNoActionBar" parent="AppTheme">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
W ten sposób możesz zachować wszystkie właściwości swojego motywu podstawowego i nie musisz jawnie dodawać ich do motywu NoActionBar :)
Nie używaj motywu Holo, a pasek akcji zniknie. Ten kod działa dla mnie na API 8+, z obsługą lib v7:
<style name="NoActionBar" parent="@style/Theme.AppCompat.Light">
<item name="android:windowNoTitle">true</item>
</style>
ustaw ten motyw dla swojej aktywności:
<activity android:theme="@style/NoActionBar" ... />
i na zajęciach.
Działa nawet wtedy, gdy rozszerza ActionBarActivity.
Pod res -> values -> styles.xml
Zmiana
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
Do
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
Poniżej znajdują się kroki umożliwiające trwałe ukrycie paska akcji:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
.Teraz zastąp element nadrzędny dowolnym innym motywem, który w nazwie zawiera „NoActionBar”.
za. Możesz również sprawdzić, jak wygląda motyw, przechodząc do karty projektowania w pliku activity_main.xml, a następnie wypróbowując każdy motyw dostępny na liście rozwijanej motywów w interfejsie użytkownika.
Jeśli Twoja MainActivity rozszerza AppCompatActivity , upewnij się, że używasz motywu AppCompat.
Wpisz ten kod do swojej onCreate
metody przed setContentView
:
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 0);
Chciałbym raczej napisać podejście projektanta do tego, dzięki temu projekt będzie oddzielony od logiki biznesowej:
Krok 1. Utwórz nowy styl w (res-> values-> styles.xml): Zasadniczo jest to kopia twojego ogólnego schematu z innym rodzicem - parent = "Theme.AppCompat.Light.NoActionBar"
<!-- custom application theme. -->
<style name="MarkitTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimary</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowNoTitle">true</item>
</style>
Krok 2: W swoim AndroidManifest.xml dodaj ten motyw do działania, w którym chcesz: np. Chcę, aby moja główna aktywność bez paska akcji, więc dodaj to jak poniżej:
<activity android:name=".MainActivity"
android:theme="@style/MarkitTheme">
To dla mnie najlepsze rozwiązanie po wypróbowaniu wielu rzeczy.
Upewnij się, że utworzyłeś nowy motyw, zmieniając nazwę domyślnego motywu w styles.xml
pliku na:
<style name="MyTheme" parent="android:Theme.Material.Light.NoActionBar">
a następnie zmienić motyw z listy rozwijanej pod Twoim main_activity.xml
na dowolnie wybrany motyw.
Innym interesującym rozwiązaniem, w którym chcesz zachować ViewPager podczas usuwania paska akcji, jest ustawienie stylu jak pokazano
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowActionBarOverlay">true</item>
<item name="android:actionBarStyle">@style/NoActionBarStyle</item>
<item name="android:windowContentOverlay">@null</item>
</style>
<style name="NoActionBarStyle" parent="android:Widget.Holo.ActionBar">
<item name="android:backgroundSplit">@null</item>
<item name="android:displayOptions"></item>
</style>
W ten sposób większość aplikacji Dialer w systemie Android wyświetla ViewPager bez paska akcji.
Odniesienie: https://github.com/CyanogenMod/android_packages_apps_Dialer
Użyj tego w styles.xml
pliku:
<style name="MyTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
Używam tego rozwiązania:
w manifeście, wewnątrz tagu aktywności:
android:label="@string/empty_string"
oraz w strings.xml:
<string name="empty_string">""</string>
W ten sposób możesz zachować ActionBar (lub pasek narzędzi) z tytułem, ale po utworzeniu działania tytuł jest automatycznie pusty.
O dziwo, żaden z nich nie działał dla mnie podczas tworzenia na Nexusie 7 z systemem 4.4.2 (API 19). W większości przypadków, przynajmniej w najnowszej wersji Android Studio (1.2.1.1), po utworzeniu pustej aplikacji do ćwiczeń:
android: theme = "@ style / AppTheme"
znajduje się w elemencie aplikacji, a nie w elemencie działania. Jeśli usunąłem powyższy kod lub próbowałem go zmienić na:
android: theme = "@ android: style / Theme.Holo.Light.NoActionBar"
aplikacja nie będzie działać ... jeśli tak się dzieje, po prostu przejdź do pliku styles.xml (res> values> styles.xml) i dodaj .NoTitleBar na końcu elementu nadrzędnego, jak w tym bloku:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"></style>
Nie są potrzebne żadne zmiany w pliku AndroidManifest.
W swoim activity_main.xml
możesz dostosować stamtąd w linii:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
.......
android:theme="@style/Theme.Design.Light.NoActionBar"
.......
">
Czasami, gdy widzisz takie rzeczy, kliknij tutaj , możesz wybrać motyw „noActionBar”.
Mam nadzieję, że ci pomogłem.