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.