2014-10-24 16 views
25

Qual è la modifica più semplice che è possibile apportare a una nuova attività vuota, come creata dall'ultima versione di Android Studio, per far sì che l'app appaia a schermo intero?Android: creazione di un'applicazione a schermo intero

Desidero creare un'applicazione Android a schermo intero. Sto lavorando con Android Studio. This post suggerisce che aggiungo una linea come ad esempio ...

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

... al file AndroidManifest.xml, come illustrato di seguito:

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="com.lexogram.james.blackslate" > 

      <application 
        android:allowBackup="true" 
        android:icon="@drawable/ic_launcher" 
        android:label="@string/app_name" 
        android:theme="@style/AppTheme" > 
        <activity 
          android:name="com.lexogram.james.blackslate.MainActivity" 
          android:label="@string/app_name" 
          android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen"> 
          <intent-filter> 
            <action android:name="android.intent.action.MAIN" /> 

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

    </manifest> 

Quando faccio questo, l'applicazione compila ma si blocca al momento del lancio. Se rimuovo la linea, l'app funziona correttamente, ma con la barra delle azioni e una barra del titolo, come notato anche da altri utenti.

Questo è il mio primo tentativo di creare un'app Android, quindi la mia app è appena alterata dall'esempio Hello World originale.

MODIFICA: Ho creato un nuovo progetto e ho apportato solo questa modifica. Ecco un estratto del registro degli errori:

FATAL EXCEPTION: main 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lexogram.james.test/com.lexogram.james.test.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2669)... 

NOTA: Sto testando su una vecchia Samsung SGH-T499Y, sistema operativo Android 2.2 (Froyo)

+0

Quale errore si ottiene quando l'applicazione si blocca? Controlla l'output LogCat in Android Studio (gli errori di crash iniziano sempre con FATAL e sono colorati in rosso). – Squeazer

+0

Stai utilizzando qualcosa da un tema personalizzato (alcuni attributi forse) che non sarebbero disponibili nel tema predefinito a schermo intero? La tua visualizzazione viene visualizzata se selezioni quel tema nella schermata di revisione (sto usando Eclipse quindi non so quale sia l'equivalente in Android Studio). I tuoi registri dovrebbero dirti cosa sta succedendo e quale è l'errore esatto, ma per me, questo era solitamente il problema quando si cambiavano i temi per le attività. – kha

+1

Si chiama 'getActionBar()' quando si utilizza il tema Holo.Light.NoActionBar? Restituisce null, se si imposta setTitle ("") 'o qualcosa del genere sarà' NullPointerException'. – Phonbopit

risposta

56

Hai trovato questo problema perché l'attività che si sta tentando di applicare l'ActionBarActivity android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen"> di sta estendendo che richiede l'applicazione del tema AppCompat.

estendere la vostra attività da Activity piuttosto che da ActionBarActivity

Potrebbe essere necessario modificare la classe Java di conseguenza po '.

Se si desidera rimuovere la barra di stato troppo quindi utilizzare questo prima setContentView(layout) in onCreateView metodo

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

È necessario estendere la classe di attività da ActionBarActivity, cambiarla in Attività. ActionBarActivity non può essere commutato a schermo intero. – Rohit5k2

+0

Prima ho ricevuto un errore dopo aver apportato questa modifica, ma poi mi sono reso conto che mi richiede anche di sostituire l'importazione android.support.v7.app.ActionBarActivity con l'importazione android.app.Activity, e ora non vedo la barra delle azioni, ma il La barra di stato è ancora presente, quindi l'app non è ancora completamente a schermo intero. –

+0

Vedere la mia risposta modificata per rimuovere la barra di stato – Rohit5k2

6

nel mio caso tutto funziona benissimo. Vedi in logcat. Forse logcat mostrare qualcosa che può aiutare a risolvere il problema

In ogni caso si può provare farlo a livello di codice:

public class ActivityName extends Activity { 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      // remove title 
      requestWindowFeature(Window.FEATURE_NO_TITLE); 
      getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN); 
      setContentView(R.layout.main); 
     } 
} 
2

In onCreate chiamata

requestWindowFeature(Window.FEATURE_NO_TITLE); // for hiding title 

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

solo fare questo nel file manifest nel tag attività

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

Aggiornamento risposta ho aggiunto android:windowIsTranslucent nel caso in cui si dispone di schermo bianco in avvio di attività

basta creare nuovo stile nel valori/styles.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> 
    <!-- to hide white screen in start of window --> 
    <item name="android:windowIsTranslucent">true</item> 
    </style> 

</resources> 

dal AndroidManifest.xml aggiungere stile alla tua attività

android:theme="@style/AppTheme"

per essere come questo

<activity android:name=".Splash" 
      android:theme="@style/AppTheme"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
0

Recentemente ho avuto lo stesso problema esatto e ha beneficiato del seguente post, nonché (in aggiunta alla soluzione di Rohit5k2 sopra):

https://bsgconsultancy.wordpress.com/2015/09/13/convert-any-website-into-android-application-by-using-android-studio/

Al punto 3, MainActivity estende Activity anziché ActionBarActivity (come menzionato da Rohit5k2). Anche mettere gli elementi del tema NoTitleBar e Fullscreen nei punti corretti nel file AndroidManifest.xml è molto importante (date un'occhiata al punto 4).

11

Basta aggiungere il seguente attributo al tema corrente:

<item name="android:windowFullscreen">true</item> 

Ad esempio:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/orange</item> 
    <item name="colorPrimaryDark">@android:color/holo_orange_dark</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowFullscreen">true</item> 
</style> 
Problemi correlati