隐藏导航栏android

问题描述 投票:0回答:3

如何在Android中隐藏导航栏以及从哪个Android版本?

我想让应用程序全屏显示。应用程序运行时不会显示导航栏。

请给我详细信息..谢谢..

java android fullscreen navigationbar
3个回答
1
投票

试试这个代码:

   getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);

0
投票

您可以使用 SYSTEM_UI_FLAG_HIDE_NAVIGATION 标志隐藏 Android 4.0 及更高版本上的导航栏。此代码片段隐藏了导航栏和状态栏:

View decorView = getWindow().getDecorView();
// Hide both the navigation bar and the status bar.
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
// a general rule, you should design your app to hide the status bar whenever you
// hide the navigation bar.
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);

您还可以查看此链接: http://developer.android.com/training/system-ui/navigation.html#40


0
投票

我希望有人能帮助我。

我正在用Java开发一个Android游戏,我需要隐藏主屏幕的导航栏,但我找不到任何解决方案。我查了很多资料,甚至检查了这里提出的解决方案,但一无所获。

我已经在布局(juego.xml)中构建了我的地图,然后我在从视图(VistaJuego)扩展的java类中使用了它。另外,在这个类中,我定义了另一个类,名为 ThreadJuego。此类的目标是无限期地运行更新游戏物理的方法。

最后我有另一个名为 Juego 的类,它扩展自 AppCompactActivity。最后一个类加载 Vistajuego 的实例。

在下面找到类和布局的定义:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<com.richard_tfg.tankgame.VistaJuego
    android:id="@+id/VistaJuego"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusable="true"
    android:background="@drawable/mapa_batalla2">

</com.richard_tfg.tankgame.VistaJuego>

这是布局的代码。下面我贴出一个VistaJuego的例子:

 public class VistaJuego extends View {
  

    private ThreadJuego thread = new ThreadJuego();
    /* Do more things */

    public VistaJuego(Context context, AttributeSet attrs){
    /*Definitions of graphics*/
    
    }


    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    /* Definitions*/
    ...
    ...
    ...
    thread.start();
    }
   

    protected synchronized void onDraw(Canvas canvas) {
        /*Definitions*/
     }

    private void setFeatures(Grafico grafico, int angulo, int rotacion){
    /*Definitions*/
    }

     protected synchronized void actualizaFisica(){
     /*Update physics*/
     }


   

     class ThreadJuego extends Thread{
    
    
            @Override
            public void run() {
                while(true){
                    actualizaFisica();
                }
            }
        }
}

最后是我的Juego类的代码:

public class Juego extends AppCompatActivity {

 VistaJuego vistaJuego;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.juego);
        vistaJuego=findViewById(R.id.VistaJuego);

    }
}

我试图用以下行隐藏导航栏:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); but it still keeps on the screen.

另外我尝试过使用下一个方法:

private void hideStatusAndNavBar() {
    getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
    );
}

并在 Juego 类的 onCreate 方法上调用它,但如果我这样做,我的设备上会出现两种不同的行为:

  1. Honor 9X:我可以看到导航栏被隐藏,但所有图形都混合在一个角落,并且应用程序的行为很奇怪。

  2. Samsung S10:应用程序总是失败,我在 Android Studio 的日志中看到的问题与定义 thread.start(); 有关。我不知道为什么问题是线程......

我查了很多资料但没有任何效果,所以如果有人能帮我解决这个问题,即使我也可以付钱...

© www.soinside.com 2019 - 2024. All rights reserved.