我的应用有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);
}
当我进入其他不全屏的活动并按下后退按钮并返回主活动时,主页按钮后退按钮隐藏了我的主要活动的底部。我该如何解决这个问题? 如果可能的话,我想知道如何让我的活动全屏,但保留操作栏。 编辑: 我要求一个活动的全屏而不是其他两个活动(除非动作栏保持不变)。如果我继续activity_two(这不是全屏)我有主页按钮后退按钮等。如果我按下后退按钮并回到主要活动按钮停留在那里,我不想(不仅因为我想要我的主要全屏,而是因为活动二的按钮停留并隐藏我的主要活动的底部)
答案 0 :(得分:1)
你可以用两种方式做到这一点,
以编程方式 - 将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);
}
或者您可以在theme
中设置AndroidManifest.xml
,
<activity
android:name=".YourActivityName"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
或者如果您使用AppCompatActivity
,则可以设置为,
<activity
android:name=".YourActivityName"
android:theme="@android:style/Theme.AppCompat.Light.NoActionBar"/>
有关窗口标记的详细信息,请查看此链接https://developer.android.com/reference/android/view/WindowManager.LayoutParams.html
答案 1 :(得分:0)
因为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);
}
}
});
}
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);
}
}
现在这应该有效,试一试。