Jak trwale wyłączyć pasek akcji


138

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?


2
Znaleziono odpowiedź hhh <activity android: theme = "@ android: style / Theme.NoTitleBar.Fullscreen" ....>
Biji,

1
że nie jest to pasek akcji podczas próby kopiowania, wklej jego widok domyślny.
Padma Kumar

tak, ale po zakończeniu kopiowania wklejania nadal nie zniknął
Biji

getSupportActionBar (). hide ();
Ameya Salagre

Odpowiedzi:


251

Jeśli używasz Theme.Holo.Lighti chcesz używać tego Theme.Holo.Light.NoActionBarwariantu 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" ... />

8
To jest poprawna odpowiedź. Nie usuwa niestandardowych motywów, takich jak rozwiązanie @ Biji.
phreakhead,

1
Masz pomysł, jaka byłaby dodatkowa flaga, aby ustawić ukrywanie paska powiadomień?
jesses.co.tt

1
Zauważyłem również, że konieczne jest dziedziczenie po FragmentActivity zamiast ActionBarActivity.
Meanman,

4
@ jesses.co.tt Pasek powiadomień można usunąć za pomocą<item name="android:windowFullscreen">true</item>
Mike Baxter

To nie zadziałało dla mnie. Użyto: stackoverflow.com/questions/29790070/…
Christopher Smit

116

Ustawiając motyw aktywności w Manifest,

<activity
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
....
>

wydaje się, że jest to jedyny właściwy sposób, aby to zrobić. zwł. jeśli zdarzy ci się mieć relatywny układ na dole ...
jcfrei

1
Niestety tylko w ten sposób mogę dostać się do pracy. Usuwa niestandardowe motywy, ale jest to naprawdę jedyna rzecz, która całkowicie usuwa ActionBar, dla mnie.
RileyE

3
To nie działa z wymuszaniem motywu AppCompat w nowym ADT. Nie sądzę, żeby z tym walczyć - próba całkowitego wyeliminowania AppCompat też jest dobrym rozwiązaniem! Wypróbowałem podejście @ monchote i to działa dla mnie
ericn

powinno to być <activity android: theme = "@ android: style / Theme.NoTitleBar"> zamiast <activity android: theme = "@ android: style / Theme.NoTitleBar.Fullscreen">
Amandeep Rohila

Na
Samsungu


30
<application
    .
    .
    android:theme="@android:style/Theme.Holo.Light.NoActionBar"
    . >

może to ci pomoże


3
Zauważ, że ta metoda wymaga minimum poziomu api 13
Olumide

23

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 {

Zrobiło to dla mnie. Dzięki za pomoc.
j_fulch,

17

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" 

12

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).


12
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);
    getSupportActionBar().hide();
}

12

Idź do styles.xml Zmień ten DarkActionBar na NoActionBar

style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

7

Możesz wymusić ukrycie paska akcji po prostu:

ActionBar  actionbar = getSupportActionBar();
actionBar.hide();

Po prostu użyj domyślnego motywu.


7

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 :)


6

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.


6

Pod res -> values ​​-> styles.xml

Zmiana

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

Do

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">


5

Oto szybkie rozwiązanie.

Znajdź style.xml i zmień motyw podstawowy aplikacji na „Theme.AppCompat.NoActionBar”, jak pokazano poniżej.

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <!-- Customize your theme here. -->
</style>

3

Poniżej znajdują się kroki umożliwiające trwałe ukrycie paska akcji:

  1. Otwórz plik app / res / values ​​/ styles.xml.
  2. Poszukaj elementu stylu o nazwie „apptheme”. Powinien wyglądać podobnie do <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">.
  3. 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.

  4. Jeśli Twoja MainActivity rozszerza AppCompatActivity , upewnij się, że używasz motywu AppCompat.


3

Wpisz ten kod do swojej onCreatemetody przed setContentView:

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 0);

3

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.


2

w funkcji onCreate dodaj następujący kod

ActionBar actionBar = getSupportActionBar();
actionBar.hide();

i po prostu zaimportuj android.support.v7.app.ActionBar


2

Upewnij się, że utworzyłeś nowy motyw, zmieniając nazwę domyślnego motywu w styles.xmlpliku na:

 <style name="MyTheme" parent="android:Theme.Material.Light.NoActionBar">

a następnie zmienić motyw z listy rozwijanej pod Twoim main_activity.xmlna dowolnie wybrany motyw.


1

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


to rozwiązanie pozostawia biały obszar u góry.
Felipe FMMobile,

Ten pracował dla mnie na Androidzie 2.3 z Theme.AppCompat.Light gdybym zmienił NoActionBarStyle rodzica @ stylu / Widget.AppCompat.ActionBar.TabBar (używam ViewPager)
TouchBoarder

1

spróbuj tego w swoim manifestie

 <activity
        android:name=".MainActivity"
        android:theme="@android:style/Theme.Holo.NoActionBar"
        android:label="@string/app_name" >

1
  protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   android.support.v7.app.ActionBar actionBar = getSupportActionBar();
    if (actionBar != null) {
        actionBar.hide();
    }
    setContentView(R.layout.activity_main);

1

Istnieją dwa sposoby wyłączenia ActionBarw systemie Android.

requestWindowFeature(Window.FEATURE_NO_TITLE); 
setContentView(R.layout.activity_main); 

1

Użyj tego w styles.xmlpliku:


<style name="MyTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowActionBar">false</item>
        <item name="android:windowNoTitle">true</item>

0

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.


0

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.


0

W swoim activity_main.xmlmoż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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.