如何在Android中隐藏导航栏以及从哪个Android版本?
我想让应用程序全屏显示。应用程序运行时不会显示导航栏。
请给我详细信息..谢谢..
试试这个代码:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
您可以使用 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
我希望有人能帮助我。
我正在用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 方法上调用它,但如果我这样做,我的设备上会出现两种不同的行为:
Honor 9X:我可以看到导航栏被隐藏,但所有图形都混合在一个角落,并且应用程序的行为很奇怪。
Samsung S10:应用程序总是失败,我在 Android Studio 的日志中看到的问题与定义 thread.start(); 有关。我不知道为什么问题是线程......
我查了很多资料但没有任何效果,所以如果有人能帮我解决这个问题,即使我也可以付钱...