Android:制作全屏应用程序

Jam*_*ton 41 android android-theme android-fullscreen

我可以对最新版本的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>
Run Code Online (Sandbox Code Playgroud)

当我这样做时,应用程序编译但在启动时崩溃.如果我删除该行,该应用程序运行正常,但使用操作栏和标题栏,其他用户也会注意到.

这是我第一次尝试创建Android应用程序,因此我的应用程序几乎不会改变原始的Hello World示例.

编辑:我创建了一个新项目,并对其进行了一次更改.以下是错误日志的摘录:

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)...
Run Code Online (Sandbox Code Playgroud)

注意:我正在测试旧的三星SGH-T499Y,运行Android 2.2(Froyo)

Roh*_*5k2 75

您遇到此问题是因为您尝试应用android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen">to的活动正在扩展ActionBarActivity,这需要应用AppCompat主题.

扩展您的活动Activity而不是来自ActionBarActivity

您可能需要相应地更改Java类.

如果你想删除状态栏,那么setContentView(layout)onCreateView方法之前使用它

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);
Run Code Online (Sandbox Code Playgroud)


Asa*_*ssi 31

只需将以下属性添加到当前主题:

<item name="android:windowFullscreen">true</item>
Run Code Online (Sandbox Code Playgroud)

例如:

<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>
Run Code Online (Sandbox Code Playgroud)


小智 17

只需在活动代码的清单文件中执行此操作即可

android:theme="@style/Theme.AppCompat.Light.NoActionBar"
Run Code Online (Sandbox Code Playgroud)


小智 9

在我的情况下一切正常.在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);
        }
 }
Run Code Online (Sandbox Code Playgroud)


Min*_*wzy 8

更新答案我添加android:windowIsTranslucent以防你在活动开始时有白屏

只需在values/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>
Run Code Online (Sandbox Code Playgroud)

从您的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>
Run Code Online (Sandbox Code Playgroud)


wan*_*nik 7

根据这个文档,添加以下代码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);
Run Code Online (Sandbox Code Playgroud)


Xar*_*mer 6

onCreate通话中

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

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                            WindowManager.LayoutParams.FLAG_FULLSCREEN);
Run Code Online (Sandbox Code Playgroud)


Ali*_*ram 5

只需在styles.xml中声明

  <style name="AppTheme.Fullscreen" parent="AppTheme">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="android:windowFullscreen">true</item>
  </style>
Run Code Online (Sandbox Code Playgroud)

然后在menifest.xml中使用

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

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
Run Code Online (Sandbox Code Playgroud)

清凉丸 :)