2013-10-23 15 views
59

Ho sviluppato una semplice applicazione demo con una schermata iniziale con una mappa e alcune schermate regolari.Android: come nascondere ActionBar su determinate attività

Ho una barra delle azioni in alto che contiene un logo. Tutto sembra a posto sul mio telefono (Galaxy s1 I9000 V2.3) ma quando lo provo su Galaxy s2 v4 la barra delle azioni appare anche nella schermata iniziale e nella schermata della mappa.

L'attività di spalsh e mappa non eredita nemmeno da ActionBarActivity, quindi come è possibile e come posso farlo andare via?

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> 

definizione MapActivity (si tratta di un lungo uno così ho incluso solo la definizione):

public class MapActivity extends FragmentActivity implements LocationListener 

Splash attività:

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

    } 

} 

risposta

93

Applicare il seguente nella vostra Tema dell'attività in 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> 

Questo dovrebbe fare il trucco.

+1

non posso usare 'getActionBar' come l'attività non eredita da' ActionBarActivity' – Tomer

+0

se i usa ' false' non lo nasconderebbe su tutti gli schermi? – Tomer

+0

Aggiorna la mia risposta che dovrebbe essere più adatta alle tue necessità. – Si8

5

È possibile utilizzare la modalità Low Profile See here

Basta cercare SYSTEM_UI_FLAG_LOW_PROFILE che offusca anche i pulsanti di navigazione, se sono presenti di schermo.

+0

+1 per avermi introdotto questo :), verificherò la soluzione @ SiKni8 perché preferisco la soluzione non codificante – Tomer

+1

Nessun problema, l'ho trovato davvero utile per visualizzare una mappa a schermo intero nella mia app, funziona davvero bene per me. –

73

Come stai chiedendo come nascondere in una certa attività; Penso .hide(); è quello che serve

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

o

getSupportActionBar().hide(); 
or 
getActionBar().hide(); 
12

Il ActionBar solito esiste lungo Fragments in modo da Activity è possibile nasconderlo

getActionbar().hide(); 
getActionbar().show(); 

e dalla Fragment si può fare

getActivity().getActionbar().hide(); 
getActivity().getActionbar().show(); 
+5

Io uso: 'getSupportActionBar(). Hide();' in ActionBarActivity –

18

1.Vai al tuo file manifest.xml.

2. Find la activity tag per il quale si desidera nascondere il tuo ActionBar e poi add,

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

  <activity 
      android:name=".MainActivity" 
      android:theme="@style/Theme.AppCompat.NoActionBar" 
      > 
6

Se stavi usando Theme.AppCompat.Light, un equivalente migliore sarebbe Theme.AppCompat.Light.NoActionBar.

Ho scoperto che l'utilizzo di Theme.AppCompat.NoTitleBar ha causato l'invisibilità del testo del pulsante, pertanto sto utilizzando 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> 
8

Se si desidera ottenere schermo intero senza actionBar e Title.

inserirlo in 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 utilizzare lo stile alla attività della manifest.xml.

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

Le risposte di cui sopra potrebbero aiutare con la cosa di ActionBar. Per aggiungere ad esso, utilizzare il seguente codice nel caso in cui si utilizza la schermata iniziale: Utilizzare questo prima di impostare la visualizzazione di contenuti:

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

Giusto per chiarire, ecco come si fa:

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

Ciò renderebbe il vostro schermo a schermo intero, vale a dire rimuovere la barra in alto dove si vede la barra di rete, ecc

0

Questo funziona in API 27

nel styles.xm l sostituire il codice al seguente ...

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

Quindi nei file (ad es. activity_list.xml) in cui si desidera che una barra degli strumenti inserisca il seguente codice.

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

Se avete problemi a passare il layout lineare (perché questo è ciò che questo codice è testato su)

Problemi correlati