2014-09-16 18 views
35

Mam różne Activities w mojej aplikacji i we wszystkich z nich nie chcę Action Bar. Nie mogę znaleźć sposobu, aby to wyłączyć. Próbowałem znaleźć atrybut, aby zastosować go do main_activity.xml, ale jak dotąd niczego nie znalazłem. Czy ktoś może mi pomóc?Android Activity bez ActionBar

Odpowiedz

55

Haha, mam został zatrzymany w tym miejscu jakiś czas temu, tak więc cieszę się, mogę pomóc z roztworem, który pracował dla mnie przynajmniej :)

Co chcesz zrobić, to Zdefiniuj nowy styl w wartościach/styles.xml, więc wygląda na to, że interesuje Cię tylko styl NoActionBar. W końcu trzeba ustawić to jako temat swojej aplikacji w AndroidManifest.xml tak wygląda to

<application 
    android:allowBackup = "true" 
    android:icon = "@drawable/ic_launcher" 
    android:label = "@string/app_name" 
    android:theme = "@style/NoActionBar" <!--This is the important line--> 
    > 
    <activity 
    [...] 

mam nadzieję, że to pomoże, jeśli nie, daj mi znać.

John

+2

dziękuję bardzo mi pomogłeś :) – Lutscha

+2

Ten nie pomógł, użył http://stackoverflow.com/questions/29790070/upgraded-to-appcompat-v22-1-0-and-now-getting- illegalargumentexception-appcompa zamiast –

2

Postaram się pokazać to tak proste, jak mogę:

DECLARE PEŁNY EKRAN AKTYWNOŚĆ NA ANDROID MAINIFEST pliku:

<activity 
      android:name=".GameActivity" 
      android:label="@string/title_activity_game" 
      android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> 

Teraz w Android Studio (jeśli używasz go Otwórz plik Activity xml (w moim przykładzie action_game.xml) w projektancie i wybierz temat (powyżej telefonu komórkowego w projektantu kliknij przycisk z małym kółkiem), a następnie wybierz Mainfest Themes po lewej stronie, a następnie NoTitleBar.Fullscreen.

Mam nadzieję, że to pomoże!

+0

Możesz użyć Androida: theme = "@ style/Theme.AppCompat.Light.NoActionBar" dla AppCompat. – atablash

51

Istnieje wiele sposobów na zrobienie tego.

1) Zmiana motywu w Android Manifest

poniżej elementu aplikacji, znajdziesz tag tematu. Wymień go na ten jeden -

android:theme="@android:style/Theme.NoTitleBar" 

Jeśli używasz AppCompat użyć @android:style/Theme.AppCompat.NoActionBar.

Spowoduje to ustawienie motywu dla wszystkich działań. Jeśli nie potrzebujesz pasek działań w określonym acitivity, a następnie ustawić motyw w pojemniku działalności, tj

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

Można również ustawić android:theme="@android:style/Theme.NoTitleBar" motywu w stylach i używać go później.


2) Utwórz motyw niestandardowy

dodać to w res/values/styles.xml

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

a następnie ustawić go jako temat Twojej aktywności w manifeście:

<activity android:theme="@style/NoActionBar" ... /> 

3) Dynamically Remov e Akcja Bar

Umieść ten kod w metodzie onCreate przed ustawieniem wyświetlać treść -

getWindow().requestFeature(Window.FEATURE_ACTION_BAR); 
getActionBar().hide(); 

Jeśli używasz wsparcia wykorzystania biblioteki getSupportActionBar().

+0

Ten nie pomógł, zamiast tego użył http://stackoverflow.com/questions/29790070/upgraded-to-appcompat-v22-1-0-and-now-getting-illegalargumentexception-appcompa. –

+0

To dlatego, że będziesz używać appcompat. Dziękuję za wskazanie. Dokonałem zmian. – Confuse

4

Możesz także zmienić dziedziczenie z ActionBarActivity na Activity, jak napisano here.

UPDATE

Dobrym rozwiązaniem jest here:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    getWindow().requestFeature(Window.FEATURE_ACTION_BAR); 
    super.onCreate(savedInstanceState); 
    getSupportActionBar().hide(); 
    setContentView(R.layout.activity_main); 
} 
3

Biorąc pod uwagę każdy opublikowania starszych sposobów ukrywania ActionBar tu jest właściwy sposób wdrożenia go w bibliotece stylów wsparcia AppCompat. Które wysoce sugeruję, aby ruszyć w kierunku, jeśli jeszcze tego nie zrobiłeś.

prostu usuwając ActionBar

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

Jeśli używasz AppCompat biblioteki obsługi, jest to najprostszy i zalecany sposób ukrywania ActionBar do pełnego ekranu lub rozpoczęcie wdrażania do paska narzędzi w twoich układów.

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <!-- Your Toolbar Color--> 
    <item name="colorPrimary">@color/primary</item> 

    <!-- colorPrimaryDark is used for the status bar --> 
    <item name="colorPrimaryDark">@color/primary_dark</item> 

    <!-- colorAccent is used as the default value for colorControlActivated, 
    which is used to tint widgets --> 
    <item name="colorAccent">@color/accent</item> 

    <!-- You can also set colorControlNormal, colorControlActivated 
    colorControlHighlight, and colorSwitchThumbNormal. --> 
</style> 

Następnie do zmienić kolor paska narzędzi

<android.support.v7.widget.Toolbar 
    android:id=”@+id/my_awesome_toolbar” 
    android:layout_height=”wrap_content” 
    android:layout_width=”match_parent” 
    android:minHeight=”?attr/actionBarSize” 
    android:background=”?attr/primary” /> 

Ostatnia uwaga: Twoja klasa aktywny powinien wystawać AppCompatActivity

public class MainActivity extends AppCompatActivity { 

<!--Activity Items --> 

} 
+0

Dzięki, Eugene H. Cóż, próbowałem twój kod zmieniając kolory z losowymi wartościami. Działa, ponieważ może działać bez definicji kolorów. Z powodu NoActionBar. – CoolMind

+0

@CoolMind Masz rację. Właśnie dodałem kilka typowych atrybutów stylów w AppCompat. Dodam opisy w odpowiedzi. –

+0

Eugene, tak, przejście od ActionBar do ToolBar to dobry pomysł. – CoolMind

2

Jeśli używasz AppCompat, deklarują swoją działalność w AndroidManifest.xml w następujący sposób:

<activity 
    android:name=".SomeActivity" 
    ... 
    android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> 
1

Jeśli chcesz większość swoich działań mieć pasek działań będzie prawdopodobnie odziedziczyć swoją bazę motywu z jednej domyślnej (ten jest generowany automatycznie przez Android Studio domyślnie):

<!-- Base application theme. --> 
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <!-- Customize your theme here. --> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="colorAccent">@color/colorAccent</item> 
    </style> 

a następnie dodać specjalny motyw dla swojej aktywności bar-mniej:

<style name="AppTheme.NoTitle" parent="AppTheme"> 
     <item name="windowNoTitle">true</item> 
     <item name="windowActionBar">false</item> 
     <item name="actionBarTheme">@null</item> 
    </style> 

dla mnie ustawienie actionBarTheme do @null było rozwiązaniem.

Wreszcie konfiguracja aktywność w pliku manifestu:

<activity ... android:theme="@style/AppTheme.NoTitle" ... > 
0

Utwórz nowy styl z dowolną nazwą, w moim przypadku „Theme.Alert.NoActionBar”

<style name="Theme.Alert.NoActionBar" parent="Theme.AppCompat.Dialog"> 
    <item name="windowNoTitle">true</item> 
    <item name="windowActionBar">false</item> 
</style> 

ustawić jego rodzica jako " Theme.AppCompat.Dialog "jak w powyższym kodzie

otwórz AndoridManifest.xml i dostosuj działanie, które chcesz pokazać jako okno alarmowe w ten sposób

<activity 
     android:excludeFromRecents="true" 
     android:theme="@style/Theme.Alert.NoActionBar" 
     android:name=".activities.UserLoginActivity" /> 

w mojej aplikacji Chcę pokazać moją aktywność użytkownika jako okno alertu, są to kody, których użyłem. mam nadzieję, że to zadziała dla Ciebie !!!

Powiązane problemy