Android: создание полноэкранного приложения

Какое самое простое изменение, которое я могу внести в новую Blank Activity, созданную последней версией Android Studio, чтобы приложение появилось в полноэкранном режиме?

Я хочу создать полноэкранное приложение для Android. Я работаю с Android Studio. Этот пост предполагает, что я добавляю строку, такую ​​как...

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

... в файл AndroidManifest.xml, как показано ниже:

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

Когда я это делаю, приложение компилируется, но оно вылетает при запуске. Если я удалю строку, приложение работает нормально, но с панелью действий и панелью заголовка, что также отмечено другими пользователями.

Это моя первая попытка создать приложение для Android, поэтому мое приложение вряд ли изменится из исходного примера Hello World.

EDIT: Я создал новый проект и сделал именно это изменение. Вот выдержка из журнала ошибок:

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

ПРИМЕЧАНИЕ. Я тестирую старый Samsung SGH-T499Y, работающий под управлением Android 2.2 (Froyo)

Ответ 1

Эта проблема возникает из-за того, что действие, которое вы пытаетесь применить android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen"> to, расширяет ActionBarActivity, которое требует применения темы AppCompat.

Расширьте свою активность от Activity, а не от ActionBarActivity

Возможно, вам придется немного изменить свой Java-класс.

Если вы хотите удалить строку состояния также, используйте это до setContentView(layout) in onCreateView method

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

Ответ 2

Просто добавьте следующий атрибут к текущей теме:

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

Например:

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

Ответ 3

просто сделайте это в своем файле манифеста в теге активности

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

Ответ 4

в моем случае все работает нормально. См. В logcat. Возможно, logcat покажет что-то, что поможет вам решить вашу проблему.

В любом случае вы можете попробовать сделать это программно:

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

Ответ 5

Обновить ответ Я добавил android:windowIsTranslucent, если у вас есть белый экран в начале действия

просто создайте новый стиль в значениях /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>

из вашего AndroidManifest.xml добавьте стиль в свою активность.

android:theme="@style/AppTheme"

чтобы быть таким

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

Ответ 6

Вы можете использовать следующие коды, чтобы иметь полную страницу в Android

Шаг 1. Создание темы в разделе styles.xml

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

Шаг 2. Добавление темы в AndroidManifest.xml

<activity
android:name='.Activity'
android:theme="@style/AppTheme.Fullscreen"/>

Шаг 3. Раздел Java-кодов

Например, вы можете добавить следующие коды в метод onCreate().

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

Ответ 7

В onCreate вызов

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

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

Ответ 8

Согласно этому документу, добавьте следующий код в onCreate

getWindow().getDecorView().setSystemUiVisibility(SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
        SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION   | 
        SYSTEM_UI_FLAG_LAYOUT_STABLE | SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);

Ответ 9

Недавно у меня была одна и та же проблема, и я получил от нее следующий пост (помимо решения Rohit5k2 выше):

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

На шаге 3 MainActivity продолжается Activity вместо ActionBarActivity (как упоминалось Rohit5k2). Ввод элементов NoTitleBar и Fullscreen в правильные места в файле AndroidManifest.xml также очень важен (см. Шаг 4).