Android 全屏显示只有一项活动?

Dim*_* gs 6 java android

我的应用程序有 3 个活动(activity_main、activity_one、activity_two)。我只想全屏显示第一个活动,所以我进行了搜索,发现我必须使用它:

 View decorView = getWindow().getDecorView();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        decorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
Run Code Online (Sandbox Code Playgroud)

当我转到非全屏的其他活动并按后退按钮并返回主活动时,主页按钮后退按钮隐藏了我的主要活动的底部。我该如何解决这个问题?另外,如果可能的话,我想知道如何让我的活动全屏显示但保留操作栏。编辑:我要求在一个活动上全屏而不是其他两个(除非操作栏保持不变)。如果我继续活动_two(不是全屏),我有主页按钮后退按钮等。如果我按下后退按钮并返回主活动按钮留在那里我不想(不仅因为我想要我的主全屏而且因为活动二的按钮停留并隐藏我的主要活动的底部)

Lal*_*dar 5

由于 onWindowsFocusChanged() 正是您所需要的,因此请尝试以下操作:

1. 首先,在 MainActivity 中将此变量声明为全局变量

private int currentApiVersion;

2. 然后将此代码粘贴到该活动的 onCreate() 中。

currentApiVersion = Build.VERSION.SDK_INT;
final int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
        | View.SYSTEM_UI_FLAG_FULLSCREEN
        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
if (currentApiVersion >= Build.VERSION_CODES.KITKAT) {
    getWindow().getDecorView().setSystemUiVisibility(flags);
    final View decorView = getWindow().getDecorView();
    decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
          @Override
          public void onSystemUiVisibilityChange(int visibility) {
              if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
                   decorView.setSystemUiVisibility(flags);
              }
          }
    });
}
Run Code Online (Sandbox Code Playgroud)

3. 现在将此方法粘贴到您的 MainActivity 类中。

@SuppressLint("NewApi")
@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (currentApiVersion >= Build.VERSION_CODES.KITKAT && hasFocus) {
        getWindow().getDecorView().setSystemUiVisibility(
               View.SYSTEM_UI_FLAG_LAYOUT_STABLE
             | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
             | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
             | View.SYSTEM_UI_FLAG_FULLSCREEN
             | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
             | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
    }
 }
Run Code Online (Sandbox Code Playgroud)

现在这应该可行了,尝试一下。


Hei*_*erg 5

您可以通过两种方式做到这一点,

以编程方式 - 将FullScreen标志设置为方法内活动窗口onCreate()(紧接在之后或之前setContentView())。你想让谁全屏。例如,

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        Window w = getWindow();
        w.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                      WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
Run Code Online (Sandbox Code Playgroud)

theme或者你可以在你的as中设置AndroidManifest.xml

<activity 
         android:name=".YourActivityName"
         android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
Run Code Online (Sandbox Code Playgroud)

或者如果您正在使用AppCompatActivity那么您可以设置为,

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

有关窗口标志的更多信息,请查看此链接https://developer.android.com/reference/android/view/WindowManager.LayoutParams.html