我正在创建一个Android应用程序,以便需要隐藏导航栏和标题栏。我能够从developer.android.com中解释的活动中做到这一点。
但我需要在整个应用程序中通过仅定义一次来实现这一点。
从某些论坛,以下代码将执行此操作:
<style name="FullScreen" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
我将这种风格应用到我的清单和爆炸中,标题栏已经消失了......但遗憾的是导航栏仍然存在..我们怎么能像这样删除导航栏?
请帮忙
或许总是强迫immersive-mode将实现你所需要的?您可以扩展Activity或AppCompatActivity并添加以下代码(从该页面获取):
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
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);
}
}
这样,每当窗口具有焦点时,它将具有粘性沉浸感,这将使其覆盖导航和状态栏。我不是100%肯定你的“标题栏”是什么意思。
所以,做一个新的课程。呼叫是ImmersiveActivity,例如
public class ImmersiveActivity extends AppCompatActivity {
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (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_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
}
}
现在,当您想要创建新活动时,只需执行以下操作:
public class SomeOtherActivity extends ImmersiveActivity {
}
通过这种方式,基于此类的每个新活动都应该以沉浸式模式(当它具有焦点时)自动启动。
在活动onCreate()
添加下面的行setContentView()
像
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
在你的AndroidManifest.xml中
将其添加到应用程序标记:
<application
....
android:theme="@style/FullScreen">
在styles.xml中:
<resources>
<style name="FullScreen" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
</resources>
尝试在manifest.xml中包含Activity
<activity
...
android:theme="@style/FullScreen">
...