android - personalizar - Tema de pantalla completa para AppCompat
hide navigation bar android studio (15)
Me gustaría saber cómo puedo aplicar el tema de pantalla completa (sin barra de título + sin barra de acción) a una actividad. Estoy usando la biblioteca AppCompat del paquete de soporte v7.
He intentado aplicar android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
a mi actividad específica, pero se bloqueó. Creo que es porque el tema de mi aplicación es así.
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
También he intentado esto
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
que solo oculta la barra de título pero no la barra de acción. Mi solución actual es que oculta la barra de acción con
getSupportActionBar().hide();
Basándome en la respuesta de @nebyan, encontré que la barra de acción aún no se oculta.
El siguiente código funciona para mí:
<style name="AppFullScreenTheme" parent="Theme.AppCompat.Light.NoActionBar">
<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>
y, por supuesto, no se olvidó de editar su archivo AndroidManifest
.
<activity
android:name="YOUR_ACTIVITY_NAME"
android:theme="@style/AppFullScreenTheme"
/>
Cuando use Theme.AppCompat en su aplicación, puede usar FullScreenTheme agregando el siguiente código a los estilos.
<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light.NoActionBar">
<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>
y también mencionar en su archivo manifiesto.
<activity
android:name=".activities.FullViewActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen"
/>
Debe ser parent = "@ style / Theme.AppCompat.Light.NoActionBar"
<style name="Theme.AppCompat.Light.NoActionBar.FullScreen"
parent="@style/Theme.AppCompat.Light.NoActionBar">
<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>
Este tema solo funciona después de API 21 (incluido). Y hacer que tanto la Barra de estado como la Barra de navegación sean transparentes.
<style name="TransparentAppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
Para eliminar la barra de título en AppCompat:
@Override
protected void onCreate(Bundle savedInstanceState) {
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
}
Para ocultar la barra de estado y la barra de acción y hacer que su actividad sea a pantalla completa, use el siguiente código en el onResume()
o onWindowFocusChanged()
su actividad:
@Override
protected void onResume() {
super.onResume();
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| 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);
}
Puedes encontrar más información en los siguientes enlaces:
- https://developer.android.com/training/system-ui/immersive#EnableFullscreen
- Pantalla completa sin navegación y barras de estado
- ¿Cómo ocultar la barra de teclas programables en el teléfono Android?
Nota: al usar las soluciones xml proporcionadas en este hilo, solo pude ocultar la barra de estado pero no la barra de navegación.
Puedes seguir el siguiente paso: -
AndoridMenifest.xml
<activity
android:name=".ui.FullImageActivity"
android:label="@string/title_activity_main"
android:screenOrientation="landscape"
android:theme="@style/DialogTheme">
</activity>
Style.xml
<style name="DialogTheme" parent="android:Theme.Dialog">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">fill_parent</item>
<!-- No backgrounds, titles or window float -->
<item name="android:windowNoTitle">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowIsFloating">false</item>
</style>
FullImageActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
setContentView(R.layout.image_view);
}
Espero que te ayude ... Gracias!
Simplemente en este chicos a tu estilo:
<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item> </style>
Su "solución alternativa" (ocultando usted mismo la barra de acción) es la forma normal. Pero Google recomienda ocultar siempre la Barra de acción cuando la Barra de título está oculta. Eche un vistazo aquí: https://developer.android.com/training/system-ui/status.html
Surgen problemas entre las versiones anteriores y posteriores de Android 4.0 (nivel de API 14).
desde aquí https://developer.android.com/training/system-ui/status.html Creé mi propia solución ...
@SuppressLint("NewApi")
@Override
protected void onResume()
{
super.onResume();
if (Build.VERSION.SDK_INT < 16)
{
// Hide the status bar
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
// Hide the action bar
getSupportActionBar().hide();
}
else
{
// Hide the status bar
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
/ Hide the action bar
getActionBar().hide();
}
}
Escribo este código en el método onResume () porque si sales de tu aplicación y luego la vuelves a abrir, ¡la barra de acción permanece activa! (y así esto soluciona el problema)
Espero que haya sido de ayuda ;)
sólo esta ?
<style name="Theme.AppCompat.Light.NoActionBar.FullScreen">
<item name="android:windowFullscreen">true</item>
</style>
<style name="Theme.AppCompat.Light.NoActionBar" parent="@style/Theme.AppCompat">
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
</style>
Usando el xml anterior en style.xml, podrá ocultar el título y la barra de acción.
<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//to remove "information bar" above the action bar
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
//to remove the action bar (title bar)
getSupportActionBar().hide();
}
requestWindowFeature(Window.FEATURE_NO_TITLE);