我正在创建一个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>
我将这种风格应用到我的清单上并且爆炸,标题栏已经消失了......但遗憾的是导航栏仍然存在..我们怎么能像这样删除导航栏?
请帮忙
答案 0 :(得分:1)
在活动onCreate()
中添加setContentView()
以上的行,如
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
答案 1 :(得分:1)
在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>
答案 2 :(得分:1)
尝试在 manifest.xml
中加入活动<activity
...
android:theme="@style/FullScreen">
...
答案 3 :(得分:1)
也许永远强迫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%肯定你的意思&#34;标题栏&#34;虽然。
所以,做一个新课。呼叫是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 {
}
通过这种方式,基于此类的每个新活动都应该以沉浸式模式自动启动(当它具有焦点时)。