Android 隐藏导航栏
我想在我的应用程序中隐藏导航栏(所有屏幕)。下面的代码隐藏导航栏。但如果我再次单击编辑文本,导航栏将出现。如何隐藏Android 隐藏导航栏,android,android-layout,Android,Android Layout,我想在我的应用程序中隐藏导航栏(所有屏幕)。下面的代码隐藏导航栏。但如果我再次单击编辑文本,导航栏将出现。如何隐藏 @Override protected void onCreate(Bundle savedInstanceState) { View decorView = getWindow().getDecorView(); decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityCh
@Override
protected void onCreate(Bundle savedInstanceState) {
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(
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);
}
}
});
}
您可以通过在应用程序标记的清单中使用下面的代码行来完成
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
您尝试的是沉浸式屏幕模式。显示用户交互导航栏的位置。根据我从您的问题中了解到的情况,您希望您的应用程序删除“ActionBar”并完全全屏显示。如果是这种情况,根据应用程序的目标版本,您需要做两件特定的事情: 如果>4.1:
View decorView = getWindow().getDecorView();
// Hide the status bar
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
// Remember that you should never show the action bar if the
// status bar is hidden, so hide that too if necessary.
ActionBar actionBar = getActionBar();
actionBar.hide();
否则,如果<4.1:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// If the Android version is lower than Jellybean, use this call to hide
// the status bar
if (Build.VERSION.SDK_INT < 16) {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
setContentView(R.layout.activity_main);
}
}
公共类MainActivity扩展活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//如果Android版本低于Jellybean,请使用此调用隐藏
//状态栏
如果(Build.VERSION.SDK_INT<16){
getWindow().setFlags(WindowManager.LayoutParams.FLAG_全屏,
WindowManager.LayoutParams.FLAG(全屏);
}
setContentView(R.layout.activity_main);
}
}
请让我知道这是否解决了您的问题。如果没有,我们可以确定到底出了什么问题,并从中吸取教训。我希望这有帮助。只需在
AndroidManifest.xml中使用即可
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main"
android:theme="@style/AppTheme.NoActionBar" />
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
将这些东西添加到您的项目中
class MainActivity:Activity(){
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
//移除导航栏。
window.decorView.systemui可见性=View.SYSTEM\u UI\u标志\u隐藏\u导航
setContentView(R.layout.activity_main)
}
覆盖窗口焦点更改(hasFocus:Boolean){
super.onWindowFocusChanged(hasFocus)
如果(hasFocus){
window.decorView.systemui可见性=(View.SYSTEM\u UI\u标志\u布局\u稳定
或View.SYSTEM\u UI\u FLAG\u LAYOUT\u HIDE\u导航
或View.SYSTEM\u UI\u FLAG\u LAYOUT\u全屏显示
或View.SYSTEM\u UI\u FLAG\u HIDE\u导航
或View.SYSTEM\u UI\u FLAG\u全屏显示
或视图。系统\u UI\u标志\u沉浸式\u粘性)
}
}
}
FYI这是文档中的代码:@Rob如果能为您复制的代码添加一些注释,那就太好了。我发现这个标志视图。导航栏是透明的,但我不知道如何使用它。
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);