2014-10-24 19 views
25

Was ist die einfachste Änderung, die ich an einer neuen leeren Aktivität vornehmen kann, die von der neuesten Version von Android Studio erstellt wurde, damit die App im Vollbildmodus angezeigt wird?Android: Erstellen einer Vollbildanwendung

Ich möchte eine Vollbild-Android-Anwendung erstellen. Ich arbeite mit Android Studio. This post schlägt vor, dass ich eine Zeile wie ...

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

... zum AndroidManifest.xml Datei hinzufügen, wie unten dargestellt:

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

Wenn ich dies tun, die App Kompiliert, aber es stürzt beim Start ab. Wenn ich die Zeile entferne, läuft die App gut, aber mit der Aktionsleiste und einer Titelleiste, wie auch von anderen Benutzern bemerkt.

Dies ist mein erster Versuch, eine Android-App zu erstellen, so dass meine App kaum vom ursprünglichen Hello World-Beispiel geändert wird.

EDIT: Ich habe ein neues Projekt erstellt und nur diese eine Änderung vorgenommen. Hier ein Auszug aus dem Fehlerprotokoll:

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

HINWEIS: Ich bin die Prüfung auf einem alten Samsung SGH-T499Y, mit Android 2.2 (Froyo)

+0

Welche Fehler Sie erhalten, wenn Sie die App abstürzt? Überprüfen Sie die LogCat-Ausgabe in Android Studio (Absturzfehler beginnen immer mit FATAL und sind rot gefärbt). – Squeazer

+0

Verwenden Sie irgendetwas aus einem benutzerdefinierten Design (möglicherweise einige Attribute), das im Standarddesign des Vollbilds nicht verfügbar wäre? Wird Ihre Ansicht gerendert, wenn Sie dieses Thema auf dem Überprüfungsbildschirm auswählen (ich verwende Eclipse, weiß also nicht, was das Äquivalent in Android Studio ist). Ihre Protokolle sollten Ihnen sagen, was vor sich geht und was genau der Fehler ist, aber für mich war das normalerweise das Problem, wenn Sie Themen für Aktivitäten änderten. – kha

+1

Rufen Sie 'getActionBar()' auf, wenn Sie das Thema Holo.Light.NoActionBar verwenden? Es gibt null zurück, wenn Sie 'SetTitle (" ")' oder etwas Ähnliches setzen, wird es 'NullPointerException' sein. – Phonbopit

Antwort

56

Sie dieses Problem bekommen, weil die Aktivität Sie die android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen"> anzuwenden versuchen, erweitert ActionBarActivity Dazu muss das AppCompat-Design angewendet werden.

Erweitern Sie Ihre Aktivität von Activity anstatt von ActionBarActivity

Sie können Ihre Java-Klasse ändern dementsprechend wenig müssen.

Wenn Sie Statusleiste entfernen mögen auch dann diese vor setContentView(layout) in onCreateView Methode verwendet

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

Sie müssen Ihre Aktivitätsklasse von ActionBarActivity erweitern und diese in Activity ändern. ActionBarActivity kann nicht auf Vollbild umgeschaltet werden. – Rohit5k2

+0

Zuerst bekam ich einen Fehler, nachdem ich diese Änderung vorgenommen hatte, aber dann erkannte ich, dass es auch erfordert, ich importiere android.support.v7.app.ActionBarActivity durch Import android.app.Activity, und jetzt sehe ich keine Aktionsleiste, aber die Die Statusleiste ist immer noch vorhanden, daher ist die App immer noch nicht vollständig im Vollbildmodus. –

+0

Siehe meine bearbeitete Antwort, um die Statusleiste zu entfernen – Rohit5k2

6

in meinem Fall alles funktioniert gut. Siehe in logcat. Vielleicht Logcat etwas zeigen, dass Sie Ihr Problem

Auf jeden Fall lösen helfen, können Sie versuchen, es programmatisch tun können:

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 Anruf

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

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

gerade dies in Ihrem Aktivitäts-Tag in Ihrer Manifest-Datei zu tun

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

aktualisiert Antwort Ich habe android:windowIsTranslucent falls Sie

weißen Bildschirm in Beginn

Aktivität haben gerade neuen Stil in Werten/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> 

von Ihrem AndroidManifest erstellen.xml add Stil an Ihre Aktivität

android:theme="@style/AppTheme"

wie dies Ich

<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

seine vor kurzem genau die gleiche Problem hatte und profitierte von dem folgenden Beitrag als auch (zusätzlich zu Rohit5k2 Lösung oben):

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

In Schritt 3 erstreckt sich MainActivityActivity statt ActionBarActivity (wie Rohit5k2 erwähnt). Es ist auch sehr wichtig, die NoTitleBar und Fullscreen Designelemente an die richtigen Stellen in der Datei AndroidManifest.xml zu setzen (sehen Sie sich Schritt 4 an).

11

Fügen Sie einfach das folgende Attribut zu Ihrem aktuellen Thema:

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

Zum Beispiel:

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