Ocultar barra de sistema en tabletas

En mi tableta, tiene barra siguiente para controlar detrás, el hogar etc. (no sé el nombre correcto, la barra de estado, la barra de control, la barra de acción u otra)

En el programa, utiliza el siguiente método para tener una pantalla completa.

requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); requestWindowFeature(Window.PROGRESS_INDETERMINATE_OFF); 

Pero no sé por qué el bar sigue aquí. Debido a ello, no puedo tener el tamaño de pantalla correcto.

¿Quién puede decirme cómo eliminarlo?

El bar

En Tablets con Android 4+, no es posible ocultar la Barra de Sistema / Navegación .

De la documentación ( Controles para la sección de visibilidad de la interfaz de usuario del sistema ):

SYSTEM_UI_FLAG_HIDE_NAVIGATION es un nuevo indicador que solicita que la barra de navegación se oculte completamente. Tenga en cuenta que esto funciona sólo para la barra de navegación utilizada por algunos teléfonos ( no ocultar la barra del sistema en las tabletas ).

Sin embargo, podría intentar atenuar la barra del sistema tal como se hace a veces durante la reproducción de juegos y video.

El indicador SYSTEM_UI_FLAG_LOW_PROFILE sustituye al indicador STATUS_BAR_HIDDEN. Cuando se establece, este indicador habilita el modo de "perfil bajo" para la barra del sistema o la barra de navegación, los botones de navegación también se ocultan y otros elementos de la barra del sistema también se ocultan para crear juegos más inmersivos sin distracción para los botones de navegación del sistema.

Parece que hay un indicador UNDOCUMENTED para esto:

 yourGreatView.setSystemUiVisibility(8); 
  • Sin pie de página negro (barra de sistema "oculta")
  • Cambia el tamaño de la vista si aparece el teclado (sin entradas superpuestas)

Verificado en Android 4.1.2 (API 16)
Verificado en Android 4.1.1 (API 16)
Verificado no funciona en Android 4.0.4 (API 15)

(Todas las tabletas)

Una opción muy nuclear es simplemente eliminar el SystemUI.apk de / system / app /. Pero advertencia esto lo eliminará de la tableta por completo. Estoy haciendo esto en una tableta que estoy usando para un quiosco de panel frontal, luego configuro la tableta para arrancar en mi aplicación.

En Android 4.4 o superior puedes ocultar completamente la barra de navegación y mantenerla oculta usando una combinación de pantalla completa e inmersión:

 @Override protected void onResume() { super.onResume(); View decorView = getWindow().getDecorView(); 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); } 

Como otras personas dicen utilizar el comando "pm disable com.android.systemui" en el modo raíz, por lo que el código siguiente ejecutar este comando en su aplicación para Android, sólo tiene que llamar al método siguiente, su tableta tiene que estar arraigada.

 private void hideNavigationBar(){ try { Process process = Runtime.getRuntime().exec("su"); DataOutputStream os = new DataOutputStream(process.getOutputStream()); os.writeBytes("pm disable com.android.systemui\n"); os.flush(); os.writeBytes("exit\n"); os.flush(); process.waitFor(); ////////////////////////////////////// } catch (InterruptedException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } 

Este código oculta la barra de navegación en el sistema android, para reaparecer la barra del sistema utilice "pm enable com.android.systemui" en lugar de "pm disable com.android.systemui" en el código anterior.

 public class Utils { public static void hideNavigations(Activity context) { View decorView = context.getWindow().getDecorView(); 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); } 

}

En su Actividad:

 @Override protected void onResume() { super.onResume(); Utils.hideNavigations(this); } 

Dado que la barra del sistema se utiliza para navegar en android no hay una manera fácil de lograr esto, puede atenuarse / oscurecer los controles:

 View v = findViewById(R.id.view_id); v.setSystemUiVisibility(View.STATUS_BAR_HIDDEN); 

Pero usted puede obtener el tamaño de la pantalla sin la barra del sistema (no estoy seguro de qué versión, creo que 3.1)

 Method rawW = Display.class.getMethod("getRawWidth"); Method rawH = Display.class.getMethod("getRawHeight"); int width = (Integer)mGetRawW.invoke(dp); int height = (Integer)mGetRawH.invoke(dp); 

Si tu aplicación tiene acceso root, también hay una forma de lograrlo: http://ppareit.github.com/HideBar/

No puedes ocultarlo, pero simplemente puedes desactivarlo, excepto en casa. Pruebe este enlace. . Utilizando SYSTEM_UI_FLAG_LOW_PROFILE puede atenuar su barra de sistema y usar onWindowFocusChanged() puede tomar el enfoque y contraerlo.

Abajo código trabajado para mí –

Puede escribirlo en onCreate () o onResume (si es necesario)

 getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_IMMERSIVE | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.