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

    }

}

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.


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(); 

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

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> 

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();

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>

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.


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.


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


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>

2

// Esconda a ActionBar no topo

// Adicione este código ao arquivo java

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

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)


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)


0

Substitua AndroidManifest.xml

android:theme="@style/FullscreenTheme"

para

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

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

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.