Android: como ocultar a ActionBar em certas atividades

93

Desenvolvi um aplicativo de demonstração simples com uma tela inicial, um mapa e algumas telas normais.

Tenho uma barra de ação na parte superior que contém um logotipo. Parece tudo bem no meu telefone (Galaxy s1 I9000 V2.3), mas quando o testo no Galaxy s2 v4, a barra de ação aparece também na tela inicial e na tela do mapa.

O spalsh e a atividade do mapa nem mesmo herdam de ActionBarActivity, então como isso é possível e como posso fazer com que desapareça?

Manifesto:

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:theme="@style/Theme.AppCompat.Light" >
        <activity
            android:name=".HomeActivity"
            android:icon="@drawable/android_logo"
            android:label=""
            android:logo="@drawable/android_logo" >

            <!--
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            -->
        </activity>
        <activity
            android:name=".MapActivity"
            android:label="" >
        </activity>
        <activity
            android:name=".PackageActivity"
            android:icon="@drawable/android_logo"
            android:label=""
            android:logo="@drawable/android_logo" >
        </activity>
        <activity
            android:name=".SplashActivity"
            android:label="" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

Definição de MapActivity (é longa, então incluí apenas a definição):

public class MapActivity extends FragmentActivity implements LocationListener

Atividade inicial:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;

public class SplashActivity extends Activity{

    private static final long SPLASH_DISPLAY_LENGTH = 2000;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        new Handler().postDelayed(new Runnable(){
            @Override
            public void run() {
                Intent mainIntent = new Intent(SplashActivity.this,HomeActivity.class);
                SplashActivity.this.startActivity(mainIntent);
                SplashActivity.this.finish();
            }
        }, SPLASH_DISPLAY_LENGTH);

    }

}
Tomer
fonte

Respostas:

127

Aplique o seguinte em seu tema para a atividade em AndroidManifest.xml:

<activity android:name=".Activity"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Isso deve funcionar.

Si8
fonte
1
Não posso usar getActionBarporque a atividade não é herdada deActionBarActivity
Tomer
se eu usar, <item name="android:windowActionBar">false</item>isso não esconderia em todas as telas?
Tomer
Atualize minha resposta que deve ser mais adequada para sua necessidade.
Si8
130

Como você está perguntando sobre como se esconder em uma determinada atividade , isto é o que você precisa:

getSupportActionBar().hide(); 
Erluxman
fonte
32

1. Vá para o seu manifest.xmlarquivo.

2. Findo activity tagpara o qual você deseja ocultar sua ActionBar e add, em seguida ,

android: theme = "@ style / Theme.AppCompat.NoActionBar"

           <activity
            android:name=".MainActivity"
            android:theme="@style/Theme.AppCompat.NoActionBar"
            >
Prateek Joshi
fonte
21

Se você deseja obter a tela inteira sem actionBar e título.

Adicione-o em 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>

e use o estilo na atividade de manifest.xml.

<activity ....
      android:theme="@style/AppTheme.NoActionBar" > ......
</activity> 
reza.cse08
fonte
15

O ActionBargeralmente existe, Fragmentsentão Activityvocê pode escondê-lo do

getActionBar().hide();
getActionBar().show();

e Fragmentvocê pode fazer isso

getActivity().getActionBar().hide();
getActivity().getActionBar().show();
sandalone
fonte
6
Eu uso: getSupportActionBar().hide(); in ActionBarActivity
Ihab Shoully
8

Se você estivesse usando Theme.AppCompat.Light, um equivalente melhor seria Theme.AppCompat.Light.NoActionBar.

Descobri que usar Theme.AppCompat.NoTitleBar fez com que o texto do meu botão ficasse invisível, então estou usando Theme.AppCompat.Light.NoActionBar.

<activity android:name=".Activity"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.AppCompat.Light.NoActionBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
Joshgoldeneagle
fonte
7

Isso funciona para mim! Coloque isso em sua atividade em manifestos

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

Você também pode fazer seu tema personalizado em styles.xml como este:

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

Espero essa ajuda.

Kyo Huu
fonte
5

Você pode usar o modo Low Profile Veja aqui

Basta pesquisar SYSTEM_UI_FLAG_LOW_PROFILEisso também escurece os botões de navegação se eles estiverem presentes na tela.

TMH
fonte
+1 por me apresentar a isso :), vou verificar a solução @ SiKni8 primeiro, pois prefiro uma solução sem codificação
Tomer
1
Sem problemas, achei muito útil para exibir um mapa em tela inteira no meu aplicativo, funciona muito bem para mim.
TMH
4

As respostas acima ajudariam com o ActionBar. Para adicionar a ele, use o seguinte código, caso esteja usando a tela inicial: Use antes de definir a visualização do conteúdo:

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

Só para esclarecer, veja como você faz isso:

    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);         
    setContentView(R.layout.activity_main);

Isso tornaria sua tela uma tela inteira, ou seja, remover a barra superior onde você vê a barra de rede, etc.

BlueLeaf
fonte
4

Aplique o seguinte em seu tema para a atividade em AndroidManifest.xml:

<activity android:name=".DashboardActivity"
        android:theme="@style/AppFullScreenTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

Em seguida, aplique o seguinte em seu estilo em style.xml

<style name="AppFullScreenTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>
Kanaiyalal Badal
fonte
2

// Esconda a ActionBar no topo

// Adicione este código ao arquivo java

    ActionBar actionBar=getSupportActionBar();
    actionBar.hide();
Ajay Patel
fonte
1

Isso funciona na API 27

No styles.xml, substitua o código pelo seguinte ....

<resources>
    <!-- No Action Bar -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
</resources>

Em seguida, nos arquivos (por exemplo, activity_list.xml) em que você deseja ter uma barra de ferramentas, coloque o seguinte código.

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="@color/colorPrimary"/>

Se você tiver problemas, mude para o layout linear (porque é nisso que este código foi testado)

Fogo de dragão
fonte
1

A partir daqui :

A partir do Android 3.0 (API de nível 11), todas as atividades que usam o tema padrão têm uma ActionBar como barra de aplicativos. No entanto, os recursos da barra de aplicativos foram adicionados gradualmente ao ActionBar nativo em várias versões do Android. Como resultado, o ActionBar nativo se comporta de maneira diferente dependendo de qual versão do sistema Android um dispositivo pode estar usando . Por outro lado, os recursos mais recentes são adicionados à versão da barra de ferramentas da biblioteca de suporte e estão disponíveis em qualquer dispositivo que possa usar a biblioteca de suporte.

Portanto, uma opção é desabilitar o ActionBar completamente (no arquivo manifest.xml do aplicativo) e, em seguida, adicionar o Toolbar em cada página que precisa de um ActionBar.

(siga o link acima para uma explicação passo a passo)

LoMaPh
fonte
0

Substitua AndroidManifest.xml

android:theme="@style/FullscreenTheme"

para

android:theme="@style/Theme.Design.NoActionBar"
Tarik Billa
fonte
0

Adicione um novo estilo em seu style.xml

<!-- 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>

<style name="LoginTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

e adicione a seguinte linha em seu manifesto

<activity android:name=".Login"
        android:label="@string/app_name"
        android:theme="@style/LoginTheme"
        >
Suraj Gupta
fonte
0

Verifique o atributo de preenchimento se o problema persistir após alterar o tema.

Problema de preenchimento criando um espaço em branco na parte superior da janela do fragmento / janela do aplicativo

Problema de preenchimento criando um espaço em branco na parte superior da janela do fragmento / janela do aplicativo

Depois de remover o preenchimento - valor superior automaticamente, o espaço em branco é removido.

Aravindhan Kumar
fonte