Como desativar a barra de ação permanentemente

138

Eu posso ocultar a barra de ação no favo de mel usando este código:

getActionBar().hide();

Mas quando o teclado é aberto e o usuário copia e cola qualquer coisa, a barra de ação é exibida novamente. Como posso desativar a barra de ação permanentemente?

Biji
fonte
2
Encontrou a resposta hhh <atividade android: theme = "@ android: style / Theme.NoTitleBar.Fullscreen" ....>
Biji
1
que não seja uma barra de ação ao tentar copiar, cole sua exibição padrão.
Padma Kumar
sim, mas após o fim da pasta de copiar, ele ainda não desapareceu #
1212 Biji
getSupportActionBar (). hide ();
Ameya Salagre 17/11

Respostas:

251

Se você estiver usando Theme.Holo.Lighte quiser usar a Theme.Holo.Light.NoActionBarvariante em dispositivos anteriores ao 3.2, poderá adicioná-lo ao seu styles.xml:

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

e defina-o como tema da sua atividade:

<activity android:theme="@style/NoActionBar" ... />
monchote
fonte
8
Essa é a resposta correta. Não remove temas personalizados como a solução da @ Biji.
phreakhead
1
Alguma idéia de qual seria o sinalizador adicional para ocultar a barra de notificações?
jesses.co.tt
1
Também achei necessário herdar FragmentActivity em vez de ActionBarActivity.
Meanman
4
@ jesses.co.tt A barra de notificação pode ser removida usando<item name="android:windowFullscreen">true</item>
Mike Baxter
Isso não funcionou para mim. Utilizado o seguinte: stackoverflow.com/questions/29790070/…
Christopher Smit
116

Ao definir o tema da atividade no manifesto,

<activity
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
....
>
Biji
fonte
essa parece ser a única maneira adequada de fazer isso. esp. se acontecer de você ter um relativelayout na parte inferior ...
jcfrei
1
Infelizmente, é a única maneira de começar a trabalhar. Ele remove temas personalizados, mas é realmente a única coisa que remove completamente o ActionBar, para mim.
RileyE
3
Isso não funciona com a aplicação do tema AppCompat no novo ADT. Eu não acho que lutar contra isso - tentar afastar completamente o AppCompat também é uma boa solução! Tenho tentar @ abordagem da monchote e ele funciona para mim
ericn
esta deve ser <atividade Android: theme = "@ android: estilo / Theme.NoTitleBar"> em vez de <atividade Android: theme = "@ android: estilo / Theme.NoTitleBar.Fullscreen">
Amandeep Rohila
No Samsung Galaxy J2, o aplicativo falha, mas não há problemas no Nexus 9
Suici Doga 3/16/16
30
<application
    .
    .
    android:theme="@android:style/Theme.Holo.Light.NoActionBar"
    . >

talvez isso ajude você

semih
fonte
3
Note-se que este método requer um mnimum de nível api 13
Olumide
23

Com a superclasse de atividade gerada padrão do Android Studio é ActionBarActivity, então, nenhuma solução em outras respostas funciona. Para resolver basta alterar a superclasse:

public class xxxActivity extends ActionBarActivity{

para:

public class xxxActivity extends Activity {
Piotr Müller
fonte
Isso fez por mim. Obrigado pela ajuda.
j_fulch
17

Se você deseja obter a tela cheia sem actionBar e Title.

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 em manifest.xml.

android:theme="@style/AppTheme.NoActionBar" 
reza.cse08
fonte
12

A melhor maneira que encontrei, que fornece temas personalizados e nenhuma barra de ação, é criar uma SuperClasse para todas as atividades no meu projeto e, no onCreate (), chamar a seguinte linha de código -

this.requestWindowFeature(Window.FEATURE_NO_TITLE);

Isso sempre funciona para mim. O único problema dessa abordagem é que você verá a barra de ação por uma fração de segundo ao iniciar o aplicativo (não a atividade, o aplicativo completo).

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

Vá para styles.xml Altere este DarkActionBar para NoActionBar

style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
Dr Adams
fonte
7

Você pode forçar a ocultar a barra de ação simplesmente:

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

Basta usar o seu tema padrão.

Trixie Belarmino
fonte
7

Se você quer apenas um tema sem barra de ação, pode usar a variante 'NoActionBar', por exemplo. se o seu tema base é como abaixo

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

então você pode usar

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

Mas se você deseja manter as propriedades do seu tema principal, por exemplo, AppTheme, faça o seguinte

<style name="AppThemeNoActionBar" parent="AppTheme">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

Você pode manter todas as propriedades do seu tema base dessa maneira e não precisa adicioná-las explicitamente ao tema NoActionBar :)

sanket vetkoli
fonte
6

Não use o tema Holo e a Barra de Ação desaparecerá. Este código está funcionando para mim na API 8+, com suporte lib v7:

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

defina esse tema para sua atividade:

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

e na sua aula de atividades.

Funciona mesmo quando estende o ActionBarActivity.

Hoang Nguyen Huu
fonte
6

Em res -> valores -> styles.xml

mudança

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

Para

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

Shubham Shekhar
fonte
5

Heres uma solução rápida.

Você encontra styles.xml e altera o tema do aplicativo base para "Theme.AppCompat.NoActionBar", como mostrado abaixo.

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

Abaixo estão as etapas para ocultar a barra de ação permanentemente:

  1. Abra app / res / values ​​/ styles.xml.
  2. Procure o elemento de estilo chamado "apptheme". Deve ser semelhante a <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">.
  3. Agora substitua o pai por qualquer outro tema que contenha "NoActionBar" em seu nome.

    uma. Você também pode verificar a aparência de um tema alternando para a guia de design activity_main.xml e testando cada tema fornecido na lista suspensa de temas da interface do usuário.

  4. Se seu MainActivity estender AppCompatActivity , certifique-se de usar um tema AppCompat.

Ravi Chandra
fonte
3

Digite este código no seu onCreatemétodo antes setContentView:

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

Gostaria de postar uma abordagem do Designer sobre isso, isso manterá o design separado da sua lógica de negócios:

Etapa 1. Crie um novo estilo em (res-> valores-> styles.xml): Basicamente, é uma cópia do seu esquema geral com pai diferente - 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>

Etapa 2: no seu AndroidManifest.xml, adicione este tema à atividade que você deseja: por exemplo, eu quero minha atividade principal sem barra de ação; adicione-o como abaixo:

<activity android:name=".MainActivity"
            android:theme="@style/MarkitTheme">

Esta é a melhor solução para mim depois de tentar muitas coisas.

Varun Ved
fonte
2

na função onCreate, adicione o seguinte código

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

e apenas importe android.support.v7.app.ActionBar

Rahul
fonte
2

Certifique-se de criar um novo tema alterando o nome do tema padrão no styles.xmlarquivo para:

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

e depois altere o tema do menu suspenso main_activity.xmlpara o que você chamou de tema.

Raif Deari
fonte
1

Outra solução interessante em que você deseja manter o ViewPager enquanto remove a barra de ação é ter um estilo como mostrado

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

É assim que a maioria dos aplicativos do Dialer no Android mostra o ViewPager sem a barra de ação.

Ref: https://github.com/CyanogenMod/android_packages_apps_Dialer

Avinash R
fonte
esta solução deixa uma área branca no topo.
Felipe FMMobile 27/03
Isso funcionou para mim no Android 2.3 com a Theme.AppCompat.Light se eu mudasse o pai NoActionBarStyle para @ estilo / Widget.AppCompat.ActionBar.TabBar (estou usando um ViewPager)
TouchBoarder
1

tente isso no seu manifesto

 <activity
        android:name=".MainActivity"
        android:theme="@android:style/Theme.Holo.NoActionBar"
        android:label="@string/app_name" >
Mrad4Tech
fonte
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);
Abhijeet
fonte
1

Existem duas maneiras de desativar ActionBarno Android.

requestWindowFeature(Window.FEATURE_NO_TITLE); 
setContentView(R.layout.activity_main); 
gaurav
fonte
1

Use isso no styles.xmlarquivo:


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

Eu uso esta solução:

no manifesto, dentro da sua tag de atividade:

android:label="@string/empty_string"

e em strings.xml:

<string name="empty_string">""</string>

Dessa forma, você mantém o ActionBar (ou Barra de Ferramentas) com o título, mas quando Activity se criado, o título fica automaticamente vazio.

Lorenzo Barbagli
fonte
0

Curiosamente, nada disso funcionou para mim ao criar um Nexus 7 executando 4.4.2 (API 19). Na maioria das vezes, pelo menos com a versão mais recente do Android Studio (1.2.1.1) após a criação de um aplicativo de atividade em branco, o:

android: theme = "@ style / AppTheme"

está no elemento de aplicativo, não no elemento de atividade. Se eu removi o código acima ou tentei alterá-lo para:

android: theme = "@ android: style / Theme.Holo.Light.NoActionBar"

o aplicativo não será executado ... se isso estiver acontecendo com você, basta acessar o arquivo styles.xml (res> values> styles.xml) e adicionar o .NoTitleBar ao final do pai, como este bloco:

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

Nenhuma alteração no arquivo AndroidManifest é necessária.

whyoz
fonte
0

No seu activity_main.xml, você pode ajustar a partir daí na linha:

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

Às vezes, quando você pode ver coisas como esta Clique aqui , Você pode selecionar aqui o tema "noActionBar".

Espero que eu tenha ajudado você.

John Melody Melissa
fonte